https://x402.renvoy.ai
Core endpoints
These are the two endpoints your server calls to process payments:POST /settle
Settle a payment on-chain. Submits the client’s signed USDC transfer to the network.
Request:
200):
POST /verify
Verify a payment signature without settling. Checks that the signed payment is valid (correct amount, recipient, sufficient balance) but does not submit it on-chain.
Request: Same format as /settle.
Response (200):
Path prefixes
The path prefix determines authentication and which facilitator tier handles the request:/sandbox/...
No authentication. IP-based rate limiting. Base Sepolia and Solana Devnet (testnets).
- 1,000 settlements / 5,000 verifications per month per IP
- 5 RPS per IP
- Minimum payment: 0.0001 USDC
/v1/<key>/...
API key authentication. Routes to the facilitator tier matching your plan.
/v1/<key>/flash/...
Same as above, but routes to the Flashblocks facilitator for ~200ms settlement. Requires Growth plan or higher.
Utility endpoints
GET /health
Health check. No authentication.
GET /supported
Returns supported networks and assets. No authentication.
GET /
Redirects to https://www.renvoy.ai. This is not an API endpoint.
Discovery
GET /discovery/resources
Returns a catalog of x402-enabled resources discovered from successful settlements. Public, no authentication. Resources that include Bazaar metadata (v2 extensions.bazaar or v1 outputSchema) are automatically indexed when settlements succeed through our proxy.
Query parameters:
| Param | Default | Description |
|---|---|---|
limit | 100 | Max items per page (1-100) |
offset | 0 | Pagination offset (max 10,000) |
type | http | Resource type (only http is currently supported) |
200):
- v2 resources include
metadata.bazaarwith full Bazaarinfoandschema - v1 resources have
metadata: {}(discovery data lives inaccepts[].outputSchema) - Responses are cached for 5 minutes
- Resources not seen in 90 days are automatically removed
Agent API
For AI agents that provision their own endpoints via USDC payment. See Agent Self-Provisioning for full documentation.| Method | Path | Auth | Description |
|---|---|---|---|
GET | /api/v1/agent/purchase | None | Returns 402 with payment requirements |
POST | /api/v1/agent/purchase | X-PAYMENT header | Purchase credits, returns API key + endpoint |
GET | /api/v1/agent/balance | SIWE | Returns credit balance and usage |
PATCH | /api/v1/agent/config | SIWE | Configure allowed networks, history opt-out |
GET | /api/v1/agent/history | SIWE | Agent settlement history (owner-scoped) |
Authentication
JWT (merchant endpoints)
Merchant endpoints (/api/me/...) require a JWT in the Authorization header:
SIWE (payer and agent endpoints)
Payer and agent endpoints accept SIWE (Sign-In with Ethereum) authentication via headers:domain matching x402.renvoy.ai and include an expirationTime (messages without expiry are rejected).
Alternatively, you can obtain a short-lived session token via POST /api/v1/auth/siwe and use it as a Bearer token for subsequent requests. See SIWE session tokens below.
SIWE session tokens
POST /api/v1/auth/siwe
Exchange SIWE credentials for a session token. This avoids repeating SIWE signature verification on every request.
Request:
200):
| Field | Type | Description |
|---|---|---|
token | string | Opaque session token, valid for 15 minutes |
wallet | string | Normalized wallet address extracted from the SIWE message |
expires_at | number | Unix timestamp (seconds) when the token expires |
Settlement History
Query settlement history for your account. All history endpoints return paginated results with opaque cursors.Merchant history (JWT)
limit (1-100, default 50), cursor (opaque, from previous response), direction (before or after).
Response (200):
agents array is present when the payer wallet holds ERC-8004 agent NFTs. Each entry contains token_id, name, and a url linking to the agent’s 8004scan profile. Omitted if no agents are detected.
Payer history (SIWE)
Admin history
Opt-out
Tenants can disable settlement logging per API key:history_enabled to true (or omit it) to re-enable. History is enabled by default.
Analytics
Aggregated analytics for your settlements. Returns summary metrics, daily time-series, top resources, error breakdown, and network distribution for a given time window. Analytics are derived from logged settlements. Keys with history disabled (history_enabled: false) are excluded from analytics data.
Merchant analytics (JWT)
days (7, 30, or 90 — default 30).
Response (200):
- All volume fields are in atomic USDC units (6 decimals). Divide by 1,000,000 for human-readable values.
period.start_dateis inclusive,period.end_dateis exclusive (today). Only completed UTC days are included — today’s activity will appear tomorrow.prev_*fields compare against the prior period of equal length. They arenullwhen there are no settlements in the prior period.unique_payerscounts distinct known payer addresses. The same wallet on different networks counts once.timeseriescontains only days with activity. Zero-fill missing dates client-side usingstart_date(inclusive) toend_date(exclusive).
Admin analytics
owner_id and tenant_id query parameters to scope results; omit both for platform-wide analytics.
Error responses
All error responses return JSON with anerror field:
| Status | Description | When |
|---|---|---|
400 | Bad request | Malformed payload, payment below minimum |
401 | Unauthorized | Invalid or missing API key, JWT, or SIWE credentials |
402 | Payment required | Agent purchase endpoint (expected, contains payment requirements) |
403 | Forbidden | Flash mode without Growth plan; network not allowed; flagged by KYT screening |
409 | Conflict | Duplicate transaction (already processed) |
413 | Payload too large | Request body exceeds limit (16 KB for /settle and /verify, 4 KB for other endpoints) |
429 | Rate limit / quota exceeded | RPS exceeded, or settlement/verification quota exhausted |
502 | Upstream error | Facilitator unreachable |
503 | Service unavailable | Facilitator not configured; KYT screening unavailable |
Rate limit headers
Metered responses include remaining quota in headers:429 responses include: