Passer au contenu principal

Qu’est-ce que x402 ?

x402 est un protocole de paiement machine-a-machine construit autour du HTTP 402 Payment Required. Il permet aux agents IA de payer automatiquement l’acces aux API sans intervention humaine. AgentWallex implemente x402 v2 avec des charges utiles d’autorisation EIP-3009.

En-tetes x402 v2

Le protocole utilise trois en-tetes HTTP :
En-teteDirectionObjectif
PAYMENT-REQUIREDServeur vers ClientChallenge 402 avec informations de tarification
PAYMENT-SIGNATUREClient vers ServeurCharge utile de paiement signee
PAYMENT-RESPONSEServeur vers ClientConfirmation de reglement

Flux de paiement

Client Agent               Paid API               AgentWallex
    |                        |                         |
    |-- GET /resource ------>|                         |
    |<-- 402 + PAYMENT-REQUIRED                        |
    |                        |                         |
    |-- POST /api/v1/x402/pay -----------------------> |
    |                        |     (sign + policy)     |
    |<-- payment_info        |                         |
    |                        |                         |
    |-- GET /resource + PAYMENT-SIGNATURE -----------> |
    |<-- 200 + PAYMENT-RESPONSE                        |
1

L'agent demande une ressource

L’agent envoie une requete HTTP standard a un point de terminaison d’API payant.
2

Le serveur renvoie 402

L’API repond avec HTTP 402 et un en-tete PAYMENT-REQUIRED contenant les details de tarification (montant, jeton, chaine, adresse payTo).
3

L'agent paie via AgentWallex

L’agent envoie les details de paiement a POST /x402/pay. AgentWallex evalue les politiques et signe le paiement.
4

L'agent retente avec la preuve de paiement

L’agent retente la requete originale avec l’en-tete PAYMENT-SIGNATURE joint.
5

Le serveur verifie et repond

L’API verifie la signature de paiement (via le facilitateur AgentWallex) et renvoie la ressource.

Utilisation des API x402

Verifier si une URL supporte x402

curl -X POST https://api.agentwallex.com/api/v1/x402/check \
  -H "X-API-Key: awx_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://paid-api.example.com/v1/data"}'

Creer un budget de session

Les sessions vous permettent de pre-autoriser un budget de depenses pour des appels d’API repetes :
curl -X POST https://api.agentwallex.com/api/v1/x402/sessions \
  -H "X-API-Key: awx_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "agent_uuid",
    "budget_limit": "100.00",
    "chain": "eip155:84532",
    "ttl_seconds": 3600,
    "allowed_urls": ["https://paid-api.example.com/v1/data"]
  }'

Declencher la negociation de paiement

curl -X POST https://api.agentwallex.com/api/v1/x402/pay \
  -H "X-API-Key: awx_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "agent_uuid",
    "target_url": "https://paid-api.example.com/v1/data",
    "session_id": "optional_session_uuid",
    "chain": "eip155:84532"
  }'
La reponse inclut payment_info avec :
ChampDescription
ledger_idID d’entree du registre interne
amountMontant du paiement
fee_amountFrais de plateforme deduits
fee_ratePourcentage de frais applique
tokenJeton utilise (par ex., USDC)
chainChaine utilisee pour le reglement
statusStatut du paiement

Integration SDK

Intercepteur HTTP automatique

Le SDK TypeScript fournit un intercepteur qui gere automatiquement le flux x402 complet :
const fetchWithPayment = aw.x402.httpInterceptor({
  agentId: "agent_abc123",
  chain: "eip155:84532",
});

// This automatically handles 402 challenges
const response = await fetchWithPayment("https://paid-api.example.com/v1/data");
const data = await response.json();

Flux manuel

// 1. Create a session budget
const session = await aw.x402.createSession({
  agentId: "agent_abc123",
  budgetLimit: "100.00",
  chain: "eip155:84532",
  ttlSeconds: 3600,
  allowedUrls: ["https://paid-api.example.com/v1/data"],
});

// 2. Pay for an API call
const result = await aw.x402.pay({
  agentId: "agent_abc123",
  targetUrl: "https://paid-api.example.com/v1/data",
  sessionId: session.id,
  chain: "eip155:84532",
});

// 3. Or pay using the session directly
await aw.x402.sessionPay(session.id, {
  targetUrl: "https://paid-api.example.com/v1/data",
});

Pour les fournisseurs de services

Si vous exposez des API payantes, votre serveur doit renvoyer un challenge x402 v2 lorsque le paiement est manquant.

Renvoyer 402 avec PAYMENT-REQUIRED

Encodez un challenge JSON (base64) dans l’en-tete PAYMENT-REQUIRED :
{
  "x402Version": 2,
  "resource": "https://your-api.com/v1/data",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "amount": "0.10",
      "asset": "USDC",
      "payTo": "0xYourAddress",
      "maxTimeoutSeconds": 300
    }
  ]
}

Verifier et regler

Utilisez les points de terminaison du facilitateur AgentWallex :
# Verify a payment signature
POST /api/v1/x402/facilitator/verify

# Settle a verified payment
POST /api/v1/x402/facilitator/settle

# Query supported chains
GET /api/v1/x402/facilitator/supported

Parametres operationnels par defaut

ParametreValeur
Intervalle de reglement300 secondes
Seuil de reglement10,00 $
Delai maximal de reglement3 600 secondes
Chaines supporteeseip155:84532, eip155:8453, eip155:1, eip155:137