Movers of the last two hours
const url = 'https://api.getchord.xyz/v1/arc/trending?limit=20';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/trending?limit=20'Tokens scored on volume and trade acceleration over the last two hours, from the hourly rollup. Each row is a full token row plus the score and its inputs.
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Responses
Section titled “ Responses ”object
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.
Trending score (higher = hotter).
USD in the 2-hour window.
Unix time, milliseconds — when the server built this answer.
Example
{ "chain": 5042, "window": "2h", "tokens": [ { "address": "0xc1347b8f2b79af2f150d26f350eb974cd7dab6f3", "symbol": "ARK", "name": "Ark", "decimals": 18, "logoURI": "https://api.getchord.xyz/v1/logo/5042/0xc1347b8f2b79af2f150d26f350eb974cd7dab6f3", "tags": [], "listed": true, "priceUsd": 0.000040595162215532016, "change24hPct": 293.1545690698809, "volume24h": 22263.892306000005, "buyVolume24h": 14913.083264000003, "sellVolume24h": 7350.809042000001, "trades24h": 443, "buys24h": 305, "sells24h": 138, "traders": 186, "lastTradeTs": 1789891841, "totalSupply": 1000000000, "marketCapUsd": 40595.162215532015, "pools": { "v3": 1, "v2": 0, "v4": 4, "byDex": { "uniswap_v3": 1, "uniswap_v4": 4 } }, "routable": true, "score": 14.783, "volNow": 17096.819990000004, "tradesNow": 328, "change1hPct": 16.748692419251164, "momentum": 33.1, "logoUriRaw": "https://ark-ai.xyz/api/uploads/578af1067cda7e6bd593deff82c2eb46.jpg" }, { "address": "0x11435e6c80944f8d8a5f34c3fabd5dd06e7c7367", "symbol": "MCAT", "name": "Stealth Cat", "decimals": 18, "logoURI": "https://api.getchord.xyz/v1/logo/5042/0x11435e6c80944f8d8a5f34c3fabd5dd06e7c7367", "tags": [], "listed": true, "priceUsd": 0.0015085540687515264, "change24hPct": 302.92128960120704, "volume24h": 44245.77249448278, "buyVolume24h": 26326.794866251035, "sellVolume24h": 17918.97762823173, "trades24h": 124, "buys24h": 74, "sells24h": 50, "traders": 38, "lastTradeTs": 1789887925, "totalSupply": 1000000000, "marketCapUsd": 1508554.0687515265, "pools": { "v3": 0, "v2": 0, "v4": 1, "byDex": { "uniswap_v4": 1 } }, "routable": false, "score": 14.154, "volNow": 43073.29349448278, "tradesNow": 119, "change1hPct": 302.92128960120704, "momentum": 18.4, "logoUriRaw": "https://ipfs.filebase.io/ipfs/QmcQFUJagLR9nUss299zLcy5HM3AKyUuNuKf5uFieitRNm" } ], "updatedAt": 1789891854247}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"}