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
- Client sends the product creation POST without an Exende API key.
- Exende returns HTTP 402 and a machine-readable PAYMENT-REQUIRED header.
- An x402-compatible client creates a signed payment payload from those requirements.
- The client repeats the same request with PAYMENT-SIGNATURE.
- 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-2465c4ee0272json
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
| Product | Paid operation | Price | Included |
|---|---|---|---|
| Callback API | POST /v1/callbacks | $0.01 USDC | One 10-minute callback; reads, waits, delivery, and deletion need no additional payment. |
| Retry API | POST /v1/retries | $0.02 USDC | One job, up to 8 attempts and 24 hours; internal attempts have no surcharge. |
| Resolve API | POST /v1/resolve | $0.03 USDC | One public resource resolution; token-protected result reads need no additional payment. |
| Protocol | x402 v2 |
|---|---|
| Scheme | exact |
| Network | Base Mainnet · eip155:8453 |
| Asset | USDC · 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
