L'agent appelle l'API protégée
`GET /v1/intelligence` arrive sans jeton de licence ES256 `Authorization: Bearer` ni reçu de session payée.
Les cartes bancaires échouent sous $1.00 et bloquent les agents IA autonomes dépourvus de carte d'entreprise. XPayr porte HTTP `402 Payment Required` en production : soumettez les appelants non authentifiés à une session stablecoin non dépositaire, réglez 99.5% sur Base, Solana, Arbitrum, TRON ou Circle Arc et vérifiez des jetons sans état ES256 JWT d'accès en moins d'une milliseconde dans votre middleware edge.
`GET /v1/intelligence` arrive sans jeton de licence ES256 `Authorization: Bearer` ni reçu de session payée.
Le middleware crée ou référence un SKU checkout/licence XPayr et renvoie `402 Payment Required` + les métadonnées `X-Payment-Required`.
L'agent valide les garde-fous via `@xpayr/mcp-server` (`POST /api/mcp`), règle en USDC/USDT (99.5% directement au portefeuille marchand) et reçoit un JWT ES256.
L'agent réessaie avec `Authorization: Bearer <jwt>`. Le middleware edge vérifie ES256 hors ligne via `/.well-known/jwks.json` et sert `200 OK`.
HTTP/1.1 402 Payment Required
Content-Type: application/json
WWW-Authenticate: XPayr402 realm="api.merchant.example", jwks="https://xpayr.com/.well-known/jwks.json"
X-Payment-Required: protocol="xpayr-x402-v1", amount="5.00", currency="USD", fee_bps="50"
{
"error": "payment_required",
"protocol": "xpayr-x402-v1",
"amount": "5.00",
"currency": "USD",
"accepted_rails": ["base:USDC", "solana:USDC", "arbitrum:USDT", "tron:USDT", "arc-testnet:USDC"],
"checkout_url": "https://xpayr.com/buy/pro-api-pass",
"mcp_endpoint": "https://xpayr.com/api/mcp",
"mcp_tool": "xpayr_create_payment_session",
"jwks_uri": "https://xpayr.com/.well-known/jwks.json"
}
import { createRemoteJWKSet, jwtVerify } from 'jose';
const XPAYR_JWKS = createRemoteJWKSet(
new URL('https://xpayr.com/.well-known/jwks.json')
);
export async function requireXpayr402(req, res, next) {
const token = (req.headers.authorization || '').replace(/^Bearer\s+/i, '');
if (token) {
try {
const { payload } = await jwtVerify(token, XPAYR_JWKS, { algorithms: ['ES256'] });
req.xpayrEntitlement = payload;
return next();
} catch (_) { /* expired or invalid token -> emit 402 below */ }
}
return res.status(402)
.set('WWW-Authenticate', 'XPayr402 jwks="https://xpayr.com/.well-known/jwks.json"')
.json({
error: 'payment_required',
protocol: 'xpayr-x402-v1',
checkout_url: 'https://xpayr.com/buy/api-credits-10k',
mcp_endpoint: 'https://xpayr.com/api/mcp'
});
}
Lorsqu'un client non authentifié ou un agent IA appelle votre endpoint protégé sans jeton de licence ES256 XPayr valide ni preuve de session payée, votre middleware renvoie HTTP 402 avec un JSON de défi de paiement XPayr (et les en-têtes WWW-Authenticate / X-Payment-Required). Une fois le paiement réglé sur Base, Solana, Arbitrum, TRON ou Circle Arc, le client reçoit un JWT ES256 signé cryptographiquement et vérifiable hors ligne via https://xpayr.com/.well-known/jwks.json.
Aucun aller-retour réseau n'est requis par requête. Votre edge worker ou backend met en cache la clé publique P-256 de XPayr depuis /.well-known/jwks.json et vérifie localement la signature ES256 JWT en moins de 0.2 milliseconde.
Les agents connectés à @xpayr/mcp-server (ou POST https://xpayr.com/api/mcp) inspectent le défi 402, vérifient leur politique de garde-fous marchand (/tools/ai-agent-policy-simulator), exécutent ou soumettent à approbation l'intention de paiement en stablecoin, puis relancent la requête avec l'en-tête Authorization: Bearer <es256_license_jwt> obtenu.
Consultez https://xpayr.com/.well-known/x402.json ainsi que https://xpayr.com/.well-known/agents.json et https://xpayr.com/.well-known/mcp.json.