Concepts

Pagination

List endpoints paginate with opaque cursors. Pass meta.cursors.next back as the cursor parameter.

List endpoints (posts, comments, replies) return one page per request and an opaque cursor for the next page. Pass it back as the cursor query parameter to continue. When meta.cursors.next is null, you have reached the end.

curl "https://api.openhandle.dev/v1/instagram/profiles/@instagram/posts" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"
{
  "platform": "instagram",
  "resource": "post",
  "capturedAt": "2026-08-06T12:04:11Z",
  "source": "live",
  "data": ["…"],
  "meta": {
    "cursors": { "next": "b3BhcXVlLWN1cnNvcg" }
  }
}

Next page:

curl "https://api.openhandle.dev/v1/instagram/profiles/@instagram/posts?cursor=b3BhcXVlLWN1cnNvcg" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"

Rules

  • Cursors are opaque. Do not parse, store long-term, or construct them. Their format can change at any time.
  • Cursors are bound to their request. A cursor from one endpoint, target, or freshness tier is invalid elsewhere and returns CURSOR_MISMATCH.
  • Each page is one billable request. Fetching five pages is five requests.
  • Sources can switch mid-pagination. If the upstream source changes while you paginate, the API returns UPSTREAM_SWITCHED (HTTP 409). Restart the pagination from the first page.

Limiting history with since

Post lists accept a since parameter with an RFC 3339 timestamp. Pagination stops once posts are older than that point, so you do not pay for pages you would discard:

curl "https://api.openhandle.dev/v1/instagram/profiles/@instagram/posts?since=2026-07-01T00:00:00Z" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"

On this page