Exende Docs

x402 payments

x402 payments

Exende uses x402 v2 for accountless, pay-per-resource access. Payment requirements are returned directly by the API and settled in USDC on Base Mainnet.

Updated September 8, 2026

HTTP payment flow

  1. Client sends the product creation POST without an Exende API key.
  2. Exende returns HTTP 402 and a machine-readable PAYMENT-REQUIRED header.
  3. An x402-compatible client creates a signed payment payload from those requirements.
  4. The client repeats the same request with PAYMENT-SIGNATURE.
  5. Exende verifies and settles the payment, then returns HTTP 201 with the resource.

http

HTTP 402 response

HTTP/2 402 Payment Required
PAYMENT-REQUIRED: <base64-encoded x402 challenge>
x-request-id: req_4a87c34d-e4e9-4029-9270-2465c4ee0272

json

Decoded Callback declaration

{
  "x402Version": 2,
  "accepts": [
    {
      "network": "eip155:8453",
      "amount": "10000",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      }
    }
  ],
  "extensions": {
    "bazaar": {
      "routeTemplate": "/v1/callbacks"
    }
  }
}

Always use the live requirements returned by the server. Do not hardcode the recipient, USDC contract, timeout, or other settlement details.

Production product prices

ProductPaid operationPriceIncluded
Callback APIPOST /v1/callbacks$0.01 USDCOne 10-minute callback; reads, waits, delivery, and deletion need no additional payment.
Retry APIPOST /v1/retries$0.02 USDCOne job, up to 8 attempts and 24 hours; internal attempts have no surcharge.
Resolve APIPOST /v1/resolve$0.03 USDCOne public resource resolution; token-protected result reads need no additional payment.
Protocolx402 v2
Schemeexact
NetworkBase Mainnet · eip155:8453
AssetUSDC · 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Callback creation is x402-only. Retry also has a separate API-key path for account-scoped usage and up to 20 attempts; sending any Authorization header selects that path and an invalid key does not fall back to x402.

Paid replay safety

Paid Retry clients must include the x402 v2 payment-identifier extension. Generate one identifier per logical job and reuse it only when repeating that same request after transport uncertainty. A settled replay returns or recovers the original job; a changed request returns PAYMENT_IDENTIFIER_CONFLICT.

PAYMENT_IN_PROGRESS means the same paid request is being processed. PAYMENT_RECONCILIATION_PENDING means settlement succeeded but durable job reconciliation is still pending. Retry the same logical request and identifier; do not create a second payment.

Resolve uses the same payment-identifier recovery model. Reuse an identifier only for the same URL, output, and render request after transport uncertainty; changed input returns PAYMENT_IDENTIFIER_CONFLICT.

Bazaar discovery

Callback and Retry paid resources are indexed by Coinbase x402 Bazaar with their exact production URLs, Base network, USDC asset, and prices. Their unpaid 402 responses also include Bazaar input and output schemas for programmatic discovery.

Callback resource

https://api.exende.dev/v1/callbacks

Resolve resource

https://resolve.exende.dev/v1/resolve

The live 402 response declares Bazaar discovery metadata. No separate verified listing URL is claimed here.

Retry resource

https://retry.exende.dev/v1/retries