Skip to main content

One envelope

Every response is { data, meta }. meta.asOf is the server timestamp (ms). Partial sources appear in meta.degraded - data is never silently faked.

Chain ids

evm:<EIP-155 id> (e.g. evm:8453 for Base, evm:645749 for HyperEVM - canonical ids, nothing invented) and solana.

camelCase fields, ms timestamps

All fields are camelCase; every timestamp is unix milliseconds and ends in At (candle time is unix seconds, TradingView-style).

null means unknown

A null field means the source is unavailable or the value fails sanity checks (e.g. marketCapUsd > $1T). A 0 is always a measured zero.

Strict validation

Unknown params or invalid enums return 400 with a machine-readable error.code - never silently-empty data.

Native + USD

On-chain amounts are native-denominated (priceNative, liquidityNative as strings for precision); USD fields are computed at the edge from live native prices. Amounts are GROSS on-chain (Mobula was net-of-fee: a ~0.3-1% systematic difference is expected).

Batch twins

Hot single-GET endpoints have a POST twin on the same path taking items[]; the response array is in input order with per-item {error} slots. Billing is per item.

Solana included

Every REST endpoint and stream also serves Solana with the same shapes: chain=solana, base58 addresses (case-sensitive), tx identity is the signature (carried in txHash). Solana volumes and counts are organic (wash-trading filtered); trades aggregate multihop legs per transaction (effective VWAP).