Skip to main content

Response shape

Success is data, plus next on lists that page:
Failure is error, with an HTTP status that matches it:
Branch on the HTTP status; error.code names the case and error.message says what to fix. See Errors. An empty list is a success (200, "data": []). A single object that does not exist is 404.

Units

null and 0 mean different things: buys: 0 is “no buys”, buys: null is “not known”. A null safety field is unknown, not clean.

Addresses

  • EVM addresses are accepted in any case and answered lowercase.
  • Solana addresses are case-sensitive and answered as given.
  • An address that cannot be one on that chain is 400: 'abc' is not a Solana address.
  • Wherever one token or one wallet is named (its routes, wallet= filters, live channels), a Solana address must also decode to a 32-byte key, or it is a 400 before any lookup. Over SSE that 400 comes before the stream starts; over the WebSocket it is an error frame with code bad_request for that subscription.
  • Lists (/v1/tokens?ids=, /v1/prices?tokens=) leave out an id that looks like a Solana address (32 to 44 base58 characters) but is not a 32-byte key, and answer the others. An id that does not look like an address at all still fails the whole request with 400.

Token shapes

marketCapUsd is always priceUsd × circulatingSupply, so it moves with the price you see.

Trades

A trade row is one side of one swap, seen from the token:
  • side: "buy" means the wallet received the token.
  • quoteAmount / quoteSymbol are the other side: SOL, USDC, WETH, BNB, …
  • One transaction can give several rows, also for one wallet. On Solana, two wallets that sign it are two rows. A multi-hop swap through the token can be a sell and a buy of the same wallet, and a swap routed through several pools can be several rows on the same side. On EVM chains a row is one swap log.
  • Rows have no id. A trade in a stream’s snapshot is not sent again as a frame, and the pages of one token trades walk do not repeat a row, so you need no deduplication of your own. If a list needs a key, use signature + wallet + side + amount; never signature alone, or signature + wallet.
tags label the trade or its wallet, from this list: An empty tags list means no label is known.

Wallet tags and labels

tags on holders and wallets are free-form strings (for example whale, kol, smart, or the trading app a wallet uses). label on a holder names an exchange or a pool when the holder is not a person.