Token API
GET/tokens/:chain/:address
Everything about one token: metadata, logo and socials, creation and creator, supply, price, stats and fees paid per window, ATH and ATL, bonding curve, market cap and FDV, holders summary, security checks, and its pools with the chart pool first.
Parameters
| Name | In | Type | Default | Allowed values |
|---|---|---|---|---|
chain | path | string | required | evm:56 (BSC), solana, evm:8453 (Base), evm:4663 (Robinhood Chain) or evm:1 (Ethereum) |
address | path | string | required | Token address (BSC) or mint (Solana) |
Response
| Field | Type | Meaning |
|---|---|---|
token | object | address, decimals, symbol, name, firstSeenBlock; totalSupply and circulatingSupply (decimal strings or null); supplyAt (unix ms the supply was read, or null). |
token.firstSeenAt | number | null | Time of firstSeenBlock, unix ms: when Aurelia first saw the token, not when it was created. |
token.createdAt, createdTx, creator | number | null, string | null, string | null | The token's creation: unix ms, transaction and creator. Only when Aurelia saw the creation itself (a launchpad's create, or the deploy transaction); all null otherwise, never guessed from a first sighting. |
token.logo | string | null | Absolute URL of the logo, re-hosted as a WebP at most 256×256 and served by GET /logos/:chain/:address. null when none is stored. |
token.description, socials, uri | string | null, object, string | null | From the token's metadata document: plain text (at most 1,000 characters); website, twitter, telegram, discord (https:// URLs or null) and others; and where the document lives as the chain states it. |
token.security | object | null | The token's risk checks, each saying how it was established: see Security. null for a chain Aurelia does not check. |
holders | { count, top10Share } | null | As the last holders read found them (kept an hour); each is null when that list was not complete. null before any read: this page never reads the chain for them. |
creator | { address, labels, tokensCreated, graduated } | null | The creator's labels, and how many tokens Aurelia saw it create and how many graduated from their bonding curve. null when the creation was not seen. |
price | object | null | From the token's latest swap as the base in its chart pool: usd (null when that swap could not be priced), quote and quoteToken (the same price in the pool's quote token; the chain's own coin is address native, with its symbol), pool, time. null when it was never the base there. |
windows | { 5m, 15m, 1h, 4h, 6h, 12h, 24h } | Each: priceChange (fraction or null), volumeUsd, buyVolumeUsd, sellVolumeUsd, trades, buys, sells, traders, buyers, sellers (distinct, approximate), feesPaidUsd (null when Aurelia's fee records start inside the window). |
stats24h | object | windows["24h"] without priceChange. |
chartPool, poolCount | string | null, number | The pool with the most 24 h volume where the token was the base (failing that, the pool holding most of it), and every pool that holds the token. |
liquidityUsd, marketCapUsd, fdvUsd | number | null | The listed pools whose liquidity is known, summed; price.usd × circulating supply, and × total supply. |
pools[] | array | Up to 25: the chart pool, then by 24 h volume. Each: address, protocol, token0, token1, based (the token was the base here in 24 h), counter, priceUsd, reserve and counterReserve (decimals applied; a curve's are virtual), liquidityUsd (real balances; null for concentrated liquidity and bins on BSC), volume24hUsd, trades24h. Token pools pages through all of them. |
feesPaidUsd | number | null | All-time fees paid on the token's swaps as the base. null unless Aurelia saw the token's creation after its fee records began. |
ath, atl | { usd, at } | null | All-time high and low USD price and the minute it happened. null unless Aurelia saw the token's creation, so it holds the whole history. |
bonding | { pool, progress, complete } | null | For a token launched on a bonding curve: the curve, the share of its sellable supply sold (0 to 1, or null when the program does not state it), and whether it completed. |
latestTradeAt | number | null | The token's newest swap in any pool, unix ms. |
Example
Captured 2026-09-28 18:03 UTC on a test instance, trimmed to 1 pool and the 5m, 1h and 24h windows.
curl -s -H 'Authorization: Bearer <key>' 'https://app.aurelia.build/api/tokens/evm:56/0xa9fcda9bd321adeb7cbbbd30ef2dd0ed1d657777'
{
"token": {
"address": "0xa9fcda9bd321adeb7cbbbd30ef2dd0ed1d657777",
"decimals": 18,
"symbol": "TAX",
"name": "Tax Token",
"firstSeenBlock": 1000002,
"totalSupply": "1000000000",
"circulatingSupply": "1000000000",
"supplyAt": 1790618262558,
"firstSeenAt": 1790546861920,
"createdAt": 1790546861920,
"createdTx": "0x4517764dd3b9782c02c5a640714b20335ea2585b394946c4b0f5f44bc1a7bf12",
"creator": "0x0f325bd174c70440fa62c31dce9f69d54baf717e",
"logo": null,
"description": null,
"socials": {
"website": null,
"twitter": null,
"telegram": null,
"discord": null,
"others": {}
},
"uri": null,
"security": {
"checkedAt": 1790618614169,
"flags": [
"buy_tax",
"sell_tax"
],
"honeypot": {
"likely": false,
"buyers": 8,
"sellers": 7,
"window": "24h",
"how": "Distinct wallets that bought, and that sold, in the last 24h (the transaction's sender), leaving out the token's creator and its pools' creators where Aurelia saw them. Likely a honeypot when 10+ wallets bought and none of them sold; not one once any sold"
},
"lp": {
"pool": "0x702e6533e0182381606adbe3ccbb77f682ccc58b",
"lockedShare": null,
"burnedShare": 1,
"how": "The pool is its own LP token: totalSupply() and balanceOf() of the zero and dead addresses at block 124557783. Locked LP is not counted: Aurelia has no trustworthy list of lockers"
},
"top10Share": 0.30010822,
"logoReuses": null,
"unknown": {
"logoReuses": "the token has no logo"
},
"contract": {
"block": 124557783,
"owner": "0x0000000000000000000000000000000000000000",
"renounced": true,
"proxy": {
"kind": "minimal",
"implementation": "0x024f18294970b5c76c0691b87f138a0317156422",
"admin": null,
"upgradeable": false
},
"functions": {
"mint": {
"present": false,
"signatures": [],
"nonOwnerCall": null
},
"pause": {
"present": false,
"signatures": [],
"nonOwnerCall": null
},
"blacklist": {
"present": false,
"signatures": [],
"nonOwnerCall": null
},
"tradingToggle": {
"present": false,
"signatures": [],
"nonOwnerCall": null
}
},
"how": "At block 124557783: owner() or getOwner(); the EIP-1967, OpenZeppelin and EIP-1822 proxy slots and EIP-1167 code; the known mint, pause, blacklist and trading-toggle signatures the implementation's bytecode dispatches, each present one called once through Multicall3 (eth_call from a caller that is not the owner)"
},
"taxes": {
"buy": 0.02,
"sell": 0.02,
"buys": 69,
"sells": 33,
"window": "24h",
"how": "Median over the swaps of the last 24h in transactions with one swap of the token: what the pool's Transfer logs delivered to the recipient against what the pool sent (buys), what the pool received against what its sender sent in all (sells)"
}
}
},
"holders": {
"count": 13,
"top10Share": 0.30010822
},
"creator": {
"address": "0x0f325bd174c70440fa62c31dce9f69d54baf717e",
"labels": [
"creator"
],
"tokensCreated": 3,
"graduated": 1
},
"stats24h": {
"volumeUsd": 1758,
"buyVolumeUsd": 1560,
"sellVolumeUsd": 198,
"trades": 105,
"buys": 72,
"sells": 33,
"traders": 8,
"buyers": 8,
"sellers": 7,
"feesPaidUsd": null
},
"chartPool": "0x702e6533e0182381606adbe3ccbb77f682ccc58b",
"price": {
"usd": 0.006,
"quote": 0.00001,
"quoteToken": {
"address": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c",
"symbol": "WBNB"
},
"pool": "0x702e6533e0182381606adbe3ccbb77f682ccc58b",
"time": 1790618578665
},
"windows": {
"5m": {
"priceChange": 0,
"volumeUsd": 600,
"buyVolumeUsd": 600,
"sellVolumeUsd": 0,
"trades": 2,
"buys": 2,
"sells": 0,
"traders": 1,
"buyers": 1,
"sellers": 0,
"feesPaidUsd": null
},
"1h": {
"priceChange": -0.019999999999999907,
"volumeUsd": 618,
"buyVolumeUsd": 612,
"sellVolumeUsd": 6,
"trades": 5,
"buys": 4,
"sells": 1,
"traders": 4,
"buyers": 3,
"sellers": 1,
"feesPaidUsd": null
},
"24h": {
"priceChange": null,
"volumeUsd": 1758,
"buyVolumeUsd": 1560,
"sellVolumeUsd": 198,
"trades": 105,
"buys": 72,
"sells": 33,
"traders": 8,
"buyers": 8,
"sellers": 7,
"feesPaidUsd": null
}
},
"poolCount": 2,
"liquidityUsd": 4204200,
"marketCapUsd": 6000000,
"fdvUsd": 6000000,
"pools": [
{
"address": "0x702e6533e0182381606adbe3ccbb77f682ccc58b",
"protocol": "pancakeswap-v2",
"token0": "0xa9fcda9bd321adeb7cbbbd30ef2dd0ed1d657777",
"token1": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c",
"volume24hUsd": 1368,
"reserve": "700000000",
"based": true,
"counter": {
"address": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c",
"symbol": "WBNB"
},
"trades24h": 102,
"priceUsd": 0.006,
"counterReserve": "7",
"liquidityUsd": 4204200
}
],
"feesPaidUsd": null,
"ath": {
"usd": 0.006122448979591836,
"at": 1790549820000
},
"atl": {
"usd": 0.000012,
"at": 1790546820000
},
"bonding": {
"pool": "0xf39f85a07237050d069187679c621b9df1df8585b01d625ae22bc7cb99430013",
"progress": 1,
"complete": true
},
"latestTradeAt": 1790618578665
}
Notes
- Cached 5 s.
404 {"error":"unknown token"}for a token Aurelia has never stored. The token channel sends this answer again as it changes, and the price after each trade. priceand the window stats count swaps where the token was the base. A stablecoin is always the quote, so USDC answersprice: nulland zero stats: it is priced at $1 when it quotes other tokens.marketCapUsdandfdvUsdare null when the price or the supply is unknown, when the supply is 0, above $2T, or above $100M while the token's known liquidity is under $1k (a price printed in a pool nobody can exit). WBNB has no supply here, since its wrapped supply is not BNB's.securitywaits at most 1.5 s for a chain read on a miss; a slower one finishes in the background and the block says so inunknown("the chain is being read"): ask again in a few seconds.- A token seen for the first time can have null
symbol,nameand supplies for a short while;logo,descriptionandsocialsfollow once its metadata document is fetched, which can take minutes or never happen. - Window stats are built from 5-minute buckets, the newest one still filling:
5mis the current bucket only.priceChangeis null without a priced trade that long ago (the look-back is 48 h). - Fees paid are the transaction fees traders paid to get their swaps included: on Solana the base and priority fee plus any Jito tip, on BSC the gas, in USD at the native price of the moment. Trading-bot fees and the pool's own swap fee are not included.
athandatlcome from the pools where the token was the base with at least 5% of the chart pool's 24 h volume, plus its bonding curve. When set, they hold the current price:ath.usd≥price.usd≥atl.usd.