Token balance RPC calls
GET/v1/data/token/balances/rpc-call
Prepares raw JSON-RPC eth_calls for fetching token balances using a batched balance-fetcher contract. Returns an rpcCallId and an array of rpcCalls that the integrator executes against their own RPC provider(s). The raw responses are then submitted to /token/balances/parse together with the rpcCallId. Two modes: single-chain (chainId + required assets; rpcCalls is a bare call array) and multi-chain (chains CSV, max 30; rpcCalls entries are { chainId, call }). In multi-chain mode assets is optional — it defaults to each chain's curated mainTokens from the token lists, keeping balance scans small even where full lists hold tens of thousands of tokens (max 200 assets per chain). Chains without any known main tokens are reported in skippedChains.
Plain-text reference — GET /v1/data/token/balances/rpc-call
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
chainId | query | string | no | Chain ID to fetch balances on (single-chain mode; required unless chains is given) See the ChainId schema for the full set of supported chains. |
chains | query | string | no | Comma-separated chain IDs (multi-chain mode, max 30). Takes precedence over chainId. |
account | query | string | yes | EVM account address (0x-prefixed, 40 hex chars) |
assets | query | string | no | Comma-separated token addresses. Required in single-chain mode; optional in multi-chain mode (defaults to each chain’s mainTokens; when given, applied to every chain). |
blockTag | query | string | no | Block tag for the RPC call |
Response 200
| Field | Type | Description |
|---|---|---|
success | True | |
data | object | |
data.data | object | Informational payload. null when the endpoint only builds calldata. |
data.data.rpcCallId | string | Unique ID referencing the server-side cached context. Pass this to /parse together with the raw responses. Valid for 5 minutes. |
data.data.rpcCalls | object[] | Ordered list of JSON-RPC calls to execute against the target chain RPC. Each call uses multicall3 aggregate3. |
data.data.rpcCalls[].method | string | JSON-RPC method name |
data.data.rpcCalls[].params | any[] | JSON-RPC parameters (call object and block tag) |
actions | null |
Example response
{
"success": true,
"data": {
"data": {
"rpcCallId": "string",
"rpcCalls": [
{
"method": "eth_call",
"params": []
}
]
}
}
}
Request
Responses
- 200
- 400
- 429
- 500
- 502
Prepared RPC calls with a context ID for parsing
Validation error
Rate limited. Unauthenticated callers share a per-IP budget; send an x-api-key header to lift it. Retry with exponential backoff.
Unexpected server error. Safe to retry with backoff.
An upstream data source or protocol origin failed (error.code is ORIGIN_FAILED). error.details carries the per-origin status. This is also what a missing or malformed required parameter currently returns, rather than a 400.