Skip to content

Movers of the last two hours

GET
/arc/trending
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.

limit
integer
default: 20 >= 1 <= 50
Media typeapplication/json
object
chain
integer
Allowed value: 5042
window
string
Allowed value: 2h
tokens
Array
object
address

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
symbol
string | null
name
string | null
decimals
integer | null
logoURI

Logo through Chord’s proxy (/v1/logo/5042/{address}, 128 px WebP).

string | null
logoUriRaw

The upstream logo URL the proxy fetched, when there is one.

string | null
tags

stablecoin, fx, stock, … — from the curated list; empty for unlisted tokens.

Array<string>
listed

On the curated Arc token list (metadata and logo vetted).

boolean
priceUsd

Last trade price on the token’s dominant venue, USD.

number | null
change24hPct
number | null
volume24h

USD, every venue, no dust floor.

number
buyVolume24h
number
sellVolume24h
number
trades24h
integer
buys24h
integer
sells24h
integer
traders

Distinct attributed wallets over the board’s day window. Routers, executors and bots are not wallets.

integer
lastTradeTs

Unix time, seconds, UTC.

integer
totalSupply

totalSupply() in whole tokens. Null when unreadable.

number | null
marketCapUsd

TotalSupply × price — fully diluted, since nothing on-chain says what is locked.

number | null
pools

Indexed pools holding the token.

object
v3
integer
v2
integer
v4
integer
byDex

Pool count per venue id (uniswap_v3, uniswap_v4, pools_trade, slipstream_fork, v3fork_<8hex>, …).

object
key
additional properties
integer
routable

The engine can quote this token today (at least one pool against a routing anchor).

boolean
flags

Honesty flags. wash = a day’s volume carried by one or two wallets; impostor = an unlisted token wearing a listed symbol. Absent when clean.

Array<string>
Allowed values: wash impostor
score

Trending score (higher = hotter).

number
volNow

USD in the 2-hour window.

number
tradesNow
integer
change1hPct
number | null
momentum
number | null
updatedAt

Unix time, milliseconds — when the server built this answer.

integer
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, …).

Media typeapplication/json

Every non-2xx body.

object
error
required

Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.

string
message

For humans.

string
statusCode

HTTP status, when included.

integer
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.

Media typeapplication/json

Every non-2xx body.

object
error
required

Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.

string
message

For humans.

string
statusCode

HTTP status, when included.

integer
Example
{
"error": "INVALID_PARAMS",
"message": "amount must be an integer string in the token's smallest unit"
}