Skip to main content
Every endpoint and every stream follows the same conventions. Once you have read one response, you can read them all.

Field names

Field names and query parameters are camelCase: marketCap, priceChangePct, countBack. Enumerated values are case-sensitive strings, such as "side": "buy", "flags": ["pro_trader"] and "metric": "marketCap". Send and compare them exactly as these docs spell them.

Timestamps

Every timestamp is an integer count of milliseconds since the Unix epoch, in requests and responses alike.
  • Fields that hold an instant end in At: createdAt, graduatedAt, updatedAt.
  • Some records name the instant directly: a trade’s timestamp, a candle’s time.

Money objects

A value with a price is an object with two legs:
Prices, market caps, liquidity, volumes and fee totals all use this shape. The API never sends a bare priceUsd field.

Decimal strings

Prices, amounts, supplies and percentages are strings that hold an exact decimal: "0.0000216", "1000000000". JSON numbers are floating point, and they lose precision on small prices and on large token amounts. Parse these strings with a decimal type:
Counts, such as holders.count and buyCount, are plain JSON integers.

The candle exception

Candle values (open, high, low, close, volume) are JSON numbers, because charting libraries consume them as floats. Nothing else in the API sends money as a number.

Percentages

A field ending in Pct holds a percentage on a 0–100 scale, as a decimal string. The sign is kept.
"-2.5" means a fall of 2.5%, not a factor of -0.025. Transfer fees are the one exception: transferFeeBps is an integer in basis points, so 250 means 2.50%.

Windowed stats

A token’s stats object holds one entry per trailing window. The keys are 5m, 30m, 1h, 6h and 24h. Each window ends now; it is not a calendar bucket.

Missing values

  • Most values that are not known yet are null. For example, graduatedAt is null until a token leaves its launchpad.
  • A few fields use an empty value instead. A trade’s name and symbol are empty strings until the token’s metadata resolves, and fields marked “not yet populated” hold 0.
  • A list that would be empty may be left out. On a token, platforms and annotations are left out when empty. On a trade, flags, platforms and identities are left out when empty. Treat a missing list as empty.

Values that can grow

Some fields hold a value from a set that grows over time, such as a trade’s flags, a token’s dexes and launchpad, and an identity’s source. Keep a value you do not recognize, rather than failing on it. Also ignore any response field you do not recognize. New fields can appear without a version change. See Versioning and compatibility.