Skip to main content
Every Infra service follows the same conventions. Learn them once and they apply across the core services (Wallet, Tokenization, and Blockchain Events) and the supporting Auth-Edge, Projects, Payments, Products, and Subscriptions services.

Base URL

All paths are relative to the API host:
Blockchain Events, Products, Subscriptions, and Payments business endpoints are mounted under the /v1 prefix. Blockchain Events endpoints additionally live under /v1/indexer.

Response envelope

Successful responses are wrapped in a consistent envelope:
Error responses use the same envelope with status: false and no data (some validation errors add an errors array). See Errors.

Content types

Send Content-Type: application/json on requests with a body, and Accept: application/json to receive JSON. All request and response bodies are JSON.

Pagination

Three pagination styles are used depending on the service. All are documented per endpoint; this table is the single reference for which service uses which:
Page-based (Payments, Subscriptions, Products, Blockchain Events). Request with page and pageSize (or limit) query parameters:
Products and Blockchain Events return a meta block instead of inline fields:
Page-size limitsDefaults are page=1 and pageSize/limit=20. Maximums vary by service: Payments and Subscriptions cap at 100; Products caps at 200; Blockchain Events caps at 200.

Data types & formats

Terminal status vocabulary

Wallet and Tokenization each run their own on-chain transaction lifecycle, and they settle with different words for the same underlying concept. This is intentional per-service vocabulary, not a bug: check the enum for the specific service rather than assuming one word applies everywhere. Both also pass through a PENDING state first; see each overview for the full lifecycle.

Network identifiers

Wallet, Tokenization, and Blockchain Events each identify chains differently. There is no unified scheme today, so use the mapping below rather than assuming a value from one service works in another: Confirmed crosswalk for the chains Wallet currently supports (see Get supported chains for the live, authoritative list):
Wallet’s supported-chains list does not currently confirm coverage for every network Blockchain Events and Tokenization expose (ATC, ETH, POL, LISK). Don’t assume a Blockchain Events/Tokenization network code has a corresponding Wallet chainId until you see it on Get supported chains.

Webhook signatures

Wallet and Blockchain Events both sign webhook deliveries, but with different schemes. Verify against the correct one for the service you’re integrating: See Outcome webhook and Blockchain Events webhooks & capabilities for the full verification code for each.

Idempotency

Value-moving wallet operations require an Idempotency-Key request header so a retried request never executes twice: Generate a unique key per operation (a UUID works well) and send it on the request:
If a request is retried with the same key (after a network timeout, for example), the server returns the original result instead of submitting a second transfer or signature. Reuse a key only when retrying the same operation; use a fresh key for each new one.
Send a unique key (a UUIDv4 works well) per operation. Reuse a key only when retrying the same request; every new operation must use a fresh key.

Rate limiting

Endpoints are throttled. When you exceed a limit you receive 429 Too Many Requests:
The retryAfter field (seconds) tells you when to retry. Back off and retry after that interval. The token endpoint is limited to 30 requests/minute/IP.