Indexer API Reference
The indexer is the public read API for zERC20 transfer history and Merkle proof data. Browser applications and SDK integrations may call the indexer directly. Relayer and Decider endpoints are separate services and are not covered by this page.
Base URL
Hosted indexer URLs are token scoped:
https://<api-host>/indexer/<token>Current hosted endpoints:
Stage / testnet
zUSDC
https://beta-v1.api.zerc20.io/indexer/zusdc
Stage / testnet
zETH
https://beta-v1.api.zerc20.io/indexer/zeth
Stage / testnet
zBNB
https://beta-v1.api.zerc20.io/indexer/zbnb
Stage / testnet
zJPYC
https://beta-v1.api.zerc20.io/indexer/zjpyc
Prod / mainnet
zUSDC
https://v1.mainnet.api.zerc20.io/indexer/zusdc
Prod / mainnet
zETH
https://v1.mainnet.api.zerc20.io/indexer/zeth
Prod / mainnet
zBNB
https://v1.mainnet.api.zerc20.io/indexer/zbnb
Prod / mainnet
zJPYC
https://v1.mainnet.api.zerc20.io/indexer/zjpyc
Token availability can differ by environment. Use the token registry or the environment configuration as the source of truth for the exact endpoint for a token and network.
CORS Policy
The hosted indexer is intended to be callable from browser SDK integrations, so the indexer may be served with public CORS enabled.
This public CORS policy applies only to the indexer read API. Relayer and Decider endpoints remain restricted to explicit origin allowlists because they can trigger state-changing or cost-bearing operations.
Endpoints
Health
Returns service health.
Status
Returns per-token indexer synchronization status.
Events By Recipient
Returns indexed transfer events for one token and one recipient address.
Limits:
limit
100
1000
Requests above the maximum are rejected with 400 Bad Request.
Events Across Tokens
Returns indexed transfer events across configured tokens for one or more recipient addresses. This endpoint is used by receive flows that need to scan multiple chains for the same burn recipient.
Limits:
recipients
-
100 addresses
limit
100
100 per recipient/token group
Requests above the maximum are rejected with 400 Bad Request.
Tree Index By Root
Returns the tree index for a previously indexed transfer root.
Historical Proofs
Request body:
Limits:
leaf_indices
100
JSON payload size
128 KiB
Requests above the maximum are rejected.
Method And Path Restrictions
Hosted deployments should only proxy the documented indexer paths.
/healthz
GET, OPTIONS
/status
GET, OPTIONS
/events
GET, OPTIONS
/all-events
GET, OPTIONS
/tree-index
GET, OPTIONS
/proofs
POST, OPTIONS
Unexpected methods may return 405 Method Not Allowed. Unexpected paths under the indexer prefix may return 404 Not Found.
Rate Limits And Operational Limits
Hosted indexer deployments may enforce edge limits to protect shared infrastructure:
IP-based request rate limits
request body size limits
request header/body timeouts
upstream proxy timeouts
Clients should treat 429 Too Many Requests, 413 Request Entity Too Large, and 5xx responses as retryable operational errors where appropriate. Use exponential backoff rather than tight retry loops.
SDK Receive Flow Limits
The SDK receive flow uses the indexer to fetch candidate events and then fetches Merkle proofs for eligible events. Because proof requests are capped at 100 leaf indices, SDK receive helpers cap indexerFetchLimit at 100.
Recommended default:
Maximum for SDK receive helpers:
Use the default unless your integration has a specific reason to fetch more events per request.
Privacy Note
Calling the hosted indexer reveals the recipient or burn address being queried to the hosted service. For stronger privacy, run a self-hosted indexer and point your SDK configuration at that endpoint.
Last updated
Was this helpful?