One token: hourly tape and venue split
const url = 'https://api.getchord.xyz/v1/arc/token/example?hours=168';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.getchord.xyz/v1/arc/token/example?hours=168'The token row plus an hourly series (1–720 hours) and the venue split for the window. Feeds Chord’s token page header, volume bars and venue table. A token with no 24-hour row comes back as { address, listed: false }.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”EVM address, hex, case-insensitive.
Query Parameters
Section titled “Query Parameters”Hourly buckets to return.
Responses
Section titled “ Responses ”object
One token on Arc with its 24-hour tape.
object
EVM address, hex, case-insensitive.
Logo through Chord’s proxy (/v1/logo/5042/{address}, 128 px WebP).
The upstream logo URL the proxy fetched, when there is one.
stablecoin, fx, stock, … — from the curated list; empty for unlisted tokens.
On the curated Arc token list (metadata and logo vetted).
Last trade price on the token’s dominant venue, USD.
USD, every venue, no dust floor.
Distinct attributed wallets over the board’s day window. Routers, executors and bots are not wallets.
Unix time, seconds, UTC.
totalSupply() in whole tokens. Null when unreadable.
TotalSupply × price — fully diluted, since nothing on-chain says what is locked.
Indexed pools holding the token.
object
Pool count per venue id (uniswap_v3, uniswap_v4, pools_trade, slipstream_fork, v3fork_<8hex>, …).
object
The engine can quote this token today (at least one pool against a routing anchor).
Honesty flags. wash = a day’s volume carried by one or two wallets; impostor = an unlisted token wearing a listed symbol. Absent when clean.
object
EVM address, hex, case-insensitive.
Oldest first.
object
object
Unix time, milliseconds — when the server built this answer.
Example
{ "chain": 5042, "token": { "address": "0x171a4217b86a807a64eb94757db6849fb4bdbaa0", "symbol": "cirBTC", "name": "cirBTC", "decimals": 8, "logoURI": "https://api.getchord.xyz/v1/logo/5042/0x171a4217b86a807a64eb94757db6849fb4bdbaa0", "tags": [], "listed": true, "priceUsd": 80423.22925858323, "change24hPct": -1.0826513878648192, "volume24h": 5689551.810770997, "buyVolume24h": 2765666.247710997, "sellVolume24h": 2923885.56306, "trades24h": 19472, "buys24h": 10554, "sells24h": 8918, "traders": 3203, "lastTradeTs": 1789891845, "totalSupply": 336.81495614, "marketCapUsd": 27087746.435366876, "pools": { "v3": 21, "v2": 5, "v4": 483, "byDex": { "uniswap_v3": 10, "v2fork_a2448256": 1, "slipstream_fork": 2, "v3fork_5bfbceb7": 6, "v3fork_bb74f231": 2, "v2fork_49aa1c63": 2, "v3fork_711492df": 1, "sushi_v2": 2, "uniswap_v4": 483 } }, "routable": true, "logoUriRaw": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bitcoin/info/logo.png" }, "hours": 2, "series": [ { "hour": 1789887600, "volUsd": 109750.71408699999, "buyUsd": 59532.95500899996, "sellUsd": 50217.759078, "trades": 465, "buys": 247, "sells": 218, "priceLast": 80315.09208021293 }, { "hour": 1789891200, "volUsd": 14523.166291000001, "buyUsd": 13047.791779000001, "sellUsd": 1475.374512, "trades": 32, "buys": 23, "sells": 9, "priceLast": 80404.02465976504 } ], "byDex": [ { "dex": "uniswap_v3", "volUsd": 100905.00920399999, "trades": 460, "sharePct": 81.1956695140446 }, { "dex": "slipstream_fork", "volUsd": 23247.566194, "trades": 28, "sharePct": 18.706719483843752 } ], "updatedAt": 1789891855212}Invalid parameters — error names the check that failed (INVALID_PARAMS, BAD_ADDRESS, BAD_LIMIT, BAD_HOURS, …).
Every non-2xx body.
object
Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.
For humans.
HTTP status, when included.
Example
{ "error": "INVALID_PARAMS", "message": "amount must be an integer string in the token's smallest unit"}The lane behind this endpoint is not ready or not enabled here (NOT_READY, CHAIN_NOT_ENABLED, NOT_ENABLED, *_UNAVAILABLE). Retry later; do not treat it as an empty answer.
Every non-2xx body.
object
Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.
For humans.
HTTP status, when included.
Example
{ "error": "INVALID_PARAMS", "message": "amount must be an integer string in the token's smallest unit"}