Skip to main content
Every endpoint returns the same JSON envelope, so a single response handler works across the whole API.
Always branch on error before reading data. On an error response, data is null.
The one exception is the Charts endpoints, which return a { "page": ..., "total": ..., "data": ... } page object and report errors with statusCode and message.

Tabular responses

List endpoints

GET /query/tabular/{model} returns data as an array of row objects. Each key is the model’s public field name; the set of fields comes from the catalog (and from selections, if you passed it). metadata carries the totals for the whole filtered result set, not just the current page.

Single-row endpoints

GET /query/tabular/{model}/{id} returns data as a single row object. Its metadata reports which public field the lookup value matched on. Many models accept alternative identifiers (a slug or a symbol) in addition to the primary key.

Timeseries responses

Timeseries responses are column-oriented: a point_schema describes the values, and each point is a compact array rather than a repeated object. This keeps large windows small on the wire.

Multi-series endpoints

GET /query/timeseries/{model}/{granularity} returns data with point_schema and a series array.

Single-series endpoints

GET /query/timeseries/{model}/{granularity}/{seriesKey} flattens the same structure: key, entity, point_schema, and points sit directly on data, with no series array and no metadata.

Reading points

A point is an array, not an object. The first element is always a unix timestamp in seconds; the values that follow are the metrics in point_schema order. Never assume a fixed column order. Read point_schema and index by it.
Individual values may be null where the underlying data has a gap.

point_schema fields

The entity object describes what the series key stands for. For asset-keyed models, that is the asset’s name, slug, and symbol. Any of these may be null.
A series key that matches nothing is not an error. GET /query/timeseries/blockchains/1d/solana returns 200 with "points": [] and no entity, because the key must be the network’s networkID, not its slug. See Finding an id.

Alternative formats

Every data endpoint can return CSV or newline-delimited JSON instead of the envelope. See Filtering & pagination.

Response headers