JSPM

nory-x402-client

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 10
  • Score
    100M100P100Q57534F
  • License MIT

Nory x402 SDK - Enable AI agents to make payments. Lightning-fast micropayments for LLMs, autonomous agents, and APIs.

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-client

For 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);

License

MIT