Skip to main content
POST
POST /v1/token/stats · 1 per token credit Batch twin: the windowed stats of up to 25 {chain, address} tokens in one call, EVM and Solana mixed freely. The response comes back 200 in input order, one slot per token: { data }, exactly the body of GET /v1/token/stats for that token, or { error: { code, message } } for that token alone (unknown token, malformed address, a pool that is not on the token), never null. One bad token never costs you the rest of the lot. Billed per token. windows is shared by the whole call (an unknown window is a 400 on the call). pools is per token: omit it for token-wide stats across every pool of that token, or pass a CSV of up to 50 pool addresses to scope that token to those markets, exactly as on the single GET.
A slot’s data is exactly what GET /v1/token/stats returns for that token with the same windows and pools: one block per window with volume, buy/sell counts and volumes, txns and priceChangePct, plus the organic counters on Solana; see that page for the fields.

Authorizations

Authorization
string
header
required

Your raw API key (not needed on the demo server).

Body

application/json
items
object[]
required

[{ "chain": "…", "address": "…", "pools": "…" }] - 1 to 25 tokens, EVM and Solana mixed freely; pools optional per token (CSV of up to 50 pool addresses of that token; omit for token-wide).

Required array length: 1 - 25 elements
Example:
windows
string
default:5m,1h,6h,24h

Same as the GET, applied to every token: comma-separated windows among 5m, 1h, 4h, 6h, 24h. Default: 5m,1h,6h,24h.

Example:

"1h,24h"

Response

200

Standard { data, meta } envelope.