Uses: Python · TypeScript · CLI · REST API
offset and top, and read totalCount to know when you’re done.
cURL samples assume
BASE=https://api.engini.io/v1 and AUTH="x-api-key: $ENGINI_API_KEY" - the setup from the REST walkthrough. Manual paging is a REST-only concern: the SDKs and the CLI page for you, which is why their tabs below are one-liners.The loop
Defaults worth knowing
Connections defaulting to 25 catches people out - a naive single request looks like the full list when it isn’t.
Filter before you page
Almost always faster than walking everything:?search= runs a semantic search and is billed against a separate, stricter rate-limit budget than ordinary reads. It’s the right tool for “find me something like X”, but don’t put it inside a pagination loop - filter with applicationSlug or name there instead.Rate limits while paging
Two budgets apply per account - a per-second burst and an hourly window. A tight loop over a large catalog can trip the burst, so handle429 rather than assuming it won’t happen:
Retry-After is in seconds: about 1 when the burst window trips, 3600 when the hourly one does. The difference matters - a one-second pause and an hour-long wait deserve very different handling.
In the SDKs the same 429 surfaces as a typed EnginiRateLimitError - neither SDK retries for you, by design. See SDK errors & pagination for the retry pattern.