Package Exports
- nory-x402-client
Readme
@nory/x402-client
The payment SDK for x402-enabled APIs. Works for both consumers (AI agents, apps) and merchants (API providers).
Installation
npm install @nory/x402-clientFor Consumers / AI Agents
Use NoryClient to pay for x402-protected APIs automatically:
import { NoryClient } from '@nory/x402-client';
const client = new NoryClient({
signer: async (requirement) => {
// Sign a USDC transfer using your wallet
// Return the base64-encoded payment payload
return signPayment(requirement);
},
});
// Automatic: fetch handles 402 responses transparently
const response = await client.fetch('https://api.example.com/premium-data');
const data = await response.json();Step-by-Step Control
const client = new NoryClient();
// 1. Discover available paid APIs
const apis = await client.listPaidApis();
// 2. Make a payment
const result = await client.pay({
resource: 'https://noryx402.com/api/paid/live-crypto',
amount: '0.001',
payTo: 'merchant_wallet_address',
});
// 3. Test with echo (automatic refund)
const echo = await client.echo(paymentPayload);For Merchants / API Providers
Use Nory to add x402 payment requirements to your API:
import { Nory, noryMiddleware } from '@nory/x402-client';
const nory = new Nory({
merchantWallet: process.env.MERCHANT_WALLET!,
network: 'solana-mainnet',
});
// Create payment requirements
const requirement = nory.createRequirement({
amount: '0.10',
resource: '/api/premium',
description: 'Premium data access',
});
// Verify and settle incoming payments
const result = await nory.verifyAndSettle(paymentPayload);Express.js Middleware
app.use('/api/premium', noryMiddleware(nory, {
amount: '0.10',
description: 'Premium data',
}));
app.get('/api/premium/data', (req, res) => {
res.json({ data: 'Premium content!', payment: req.payment });
});Supported Networks
| Network | ID | Settlement |
|---|---|---|
| Solana | solana-mainnet |
~400ms |
| Base | base-mainnet |
~2s |
| Polygon | polygon-mainnet |
~2s |
| Arbitrum | arbitrum-mainnet |
~2s |
| Optimism | optimism-mainnet |
~2s |
| Avalanche | avalanche-mainnet |
~2s |
| Sei | sei-mainnet |
~400ms |
| IoTeX | iotex-mainnet |
~5s |
Utilities
import { parseUsdcAmount, formatUsdcAmount, decodePaymentPayload } from '@nory/x402-client';
parseUsdcAmount('1000000'); // 1.0
formatUsdcAmount(0.50); // '500000'Testing
Use the echo endpoint for free testing with automatic refunds:
const result = await client.echo(paymentPayload);
console.log('Refund TX:', result.refundTxHash);Links
- Documentation: https://noryx402.com/docs
- GitHub: https://github.com/TheMemeBanker/x402-pay
- Health: https://noryx402.com/api/x402/health
License
MIT