Get started
Pagination, cursors and asOf
Every list has a cursor. Every answer says which checkpoint it is true at.
Cursors
A cursor is an opaque string. Pass back the cursor you got and you get the next page. When there are no more pages, cursor is null. Do not parse or build cursors, even though many look like checkpoint:txIndex. The format can change.
Cursors are stable. A new transaction arriving while you page does not shift your place. DAS methods also accept page and map it to a cursor, but cursors are faster and are required past 10,000 items.
Response shapes
| Where | Shape |
|---|---|
| REST lists under /v1 | { items, cursor, asOf } |
| REST single objects | The object, with an asOf field |
| JSON-RPC DAS methods | { total, limit, cursor, items, asOf } |
| REST v0 transaction paths | A bare array. Page with before and until (digests). |
Paging loop
let cursor: string | null = null;
const all = [];
do {
const res = await fetch("https://api.tide.ad/", {
method: "POST",
headers: { "x-api-key": process.env.TIDE_API_KEY!, "content-type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "getTransactionsForAddress",
params: { address: "0xYOUR_ADDRESS", limit: 100, cursor },
}),
});
const { result } = await res.json();
all.push(...result.items);
cursor = result.cursor;
} while (cursor);asOf
asOf says which point of the chain the answer is true at. Live answers carry the head of the index. Answers about a past time carry the checkpoint they were computed at.
{
"checkpoint": 123456789,
"timestamp": "2026-11-03T09:14:07.512Z",
"lagMs": 940
}| Field | Meaning |
|---|---|
| checkpoint | The checkpoint the answer is true at. |
| timestamp | When that checkpoint was finalized. |
| lagMs | How far the index was behind the chain when it answered. Normally about a second. |
Use asOf to detect stale reads and to line up two answers. If you ask for a balance at a time, the response says the exact checkpoint it used.
USD and price time
A USD value always comes with the time of the price it used: { "usd": 12.4, "priceAsOf": "2026-11-03T09:00:00Z" }. In DAS results it is price_info.as_of. There is never a USD number without a time.
Amounts are JSON numbers when they fit safely, and strings with a Raw suffix (for example amountRaw) for the exact integer in the coin's smallest unit.
Trimming responses
Add fields=a,b.c to any call to keep only those fields. Add view=compact to drop the explain text, steps and raw blocks. Agents should use both to keep answers small.