Pagination
How Decryptr API lists page with cursors, the response envelope, page sizes per plan and how pages are charged.
Every response has the same envelope: your data under data, when it was produced in as_of, and a short disclaimer. Hyperliquid-derived responses add an attribution line (see Data and licensing).
Lists that can run long, such as /v1/sentiment/{asset} and /v1/orderflow/delta, also return next_cursor:
{
"data": [
{ "asset": "BTC", "day": "2026-10-23T00:00:00.000Z", "callers": 10, "long_pct": 40 },
{ "asset": "BTC", "day": "2026-10-22T00:00:00.000Z", "callers": 11, "long_pct": 47 }
],
"next_cursor": "eyJ0IjoiMjAyNi0xMC0yMVQwMDowMDowMFoifQ",
"as_of": "2026-10-23T12:14:30.000Z",
"disclaimer": "Crowd and model output, not a recommendation. Information only, not financial advice."
}dataholds the items, newest first unless the endpoint says otherwise.next_cursoris an opaque string. Pass it back ascursorto get the next page. It isnullon the last page.- Ranked lists such as
/v1/trending/coinsand/v1/calls/most-calledreturn the toplimitand have no cursor.
Pages use cursors, never offsets, so items that arrive while you page do not shift or repeat what you see.
Page size
Set limit to choose the page size, from 1 to 100. It defaults to 20, or your plan's maximum if that is lower. Your plan sets the most calls one request may reserve, so the most items per page is that number divided by the endpoint's calls per item (see Plans and pricing). Asking for more gets 400 limit_too_large, and max_items in the error says what you can have.
Each page costs the endpoint's calls per item for each item it returns, and before it runs the API reserves limit times that. A smaller limit near the end of the month avoids a 429 quota_exceeded.
Reading every page
Keep the same filters on every request; only cursor changes. A cursor is opaque: pass it back exactly as you received it.
export async function* allDelta(key, asset) {
let cursor = null;
do {
const q = new URLSearchParams({ asset, limit: "25" });
if (cursor) q.set("cursor", cursor);
const res = await fetch(`https://data.decryptr.ai/v1/orderflow/delta?${q}`, {
headers: { Authorization: `Bearer ${key}` },
});
if (!res.ok) throw new Error(`${res.status} ${(await res.json()).code}`);
const page = await res.json();
yield* page.data;
cursor = page.next_cursor;
} while (cursor);
}
for await (const c of allDelta(process.env.DECRYPTR_API_KEY, "BTC")) {
console.log(c.open_time, c.delta);
}These examples need a Starter plan or above, and a limit of 25 uses 25 calls a page. On Developer, use /v1/sentiment/{asset} with limit 10.
Time ranges
Endpoints that take since and until use ISO 8601 times with an offset, such as 2026-10-23T09:00:00Z. since must be inside your plan's history, or you get 400 history_limit. On the Developer plan, until is capped at 60 minutes before now.
To keep up with new items without paging the whole history, store the newest timestamp you have seen and pass it as since next time.