Feedjoltdocs
DevelopersAPI

API pagination

Paginate Feedjolt API list endpoints with limit and offset. Common pattern, an iterator example, offset caveats on fast-changing data, and the OpenAPI reference.

List endpoints paginate. The exact query parameters and response shape per endpoint are documented in the OpenAPI reference - we don't standardise across the board because some endpoints (delivery logs, audit logs) need cursor-style behaviour while others (posts, comments) work fine with simple offset.

The common case looks like this.

Common pattern

GET /api/v1/some-resource?limit=50&offset=0
ParamDefaultNotes
limitvaries (often 50)Page size. Capped per endpoint - see the OpenAPI ref.
offset0Number of items to skip.

Other common params: success (boolean filter on delivery logs), date filters (created_after, created_before), search/sort.

Iterating with limit + offset

async function* allItems<T>(url: string, init: RequestInit, limit = 100): AsyncGenerator<T> {
  let offset = 0;
  while (true) {
    const u = new URL(url);
    u.searchParams.set("limit", String(limit));
    u.searchParams.set("offset", String(offset));
    const res = await fetch(u, init);
    const items: T[] = await res.json();
    for (const item of items) yield item;
    if (items.length < limit) break;
    offset += limit;
  }
}

Caveats

  • Iterating a fast-changing dataset with offset is racy. New items inserted at the head will shift the offsets, so you'll either skip or duplicate items. For read-once exports, take a snapshot via filtered queries (created_before=<now>) instead.
  • Cursor pagination is on the roadmap for the high-write endpoints (delivery logs, audit logs) where offset becomes expensive.

For per-endpoint detail (default limit, max limit, additional filters), the OpenAPI reference is canonical.

On this page