Every list endpoint in v2 uses cursor pagination with the same response shape. No exceptions, noDocumentation Index
Fetch the complete documentation index at: https://productlane.mintlify.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
offset/skip/page parameters anywhere.
Response shape
data- array of rows. Empty array on the last page if it lined up.page.cursor- opaque token. Pass it as?cursor=...to fetch the next page.nullon the final page.page.has_more-falsewhen there is nothing else to fetch. Use this as your loop condition.page.limit- the effective page size we used.
Parameters
| Parameter | Default | Max | Notes |
|---|---|---|---|
limit | 50 | 200 | Rows per page. |
cursor | none | - | Opaque token from the previous response’s page.cursor. |
Sort
Every list sorts bycreated_at DESC, id DESC. There’s no sort parameter - if you need a different order, fetch and sort client-side.
Fetching a single page
Fetching the next page
Takepage.cursor from the previous response and pass it as ?cursor=...:
Looping through all pages
- Loops on
has_more, not ondata.length. - Reads the cursor from the previous response - never builds one.
- Re-uses the same
limiton every page.
Counts
There’s nototal_count. Counting an unbounded resource is expensive and most callers don’t need it - has_more answers “are there more?” cheaply. If you need an exact count for a specific resource, let us know and we’ll add a /count endpoint.
Filtering and pagination together
Filters apply before pagination. Pass them on the first request only - every subsequent request only needscursor (and optionally limit):
Common pitfalls
- Don’t build cursors yourself. They’re opaque and the format will change. Always read them from a response.
- Don’t reuse a cursor across filters. A cursor from
?status=openis meaningless against?status=done. If you change filters, start over. - Don’t loop forever. Always loop on
has_more. If you’re polling for new rows, see Webhooks - pull-based polling will hit rate limits before it hits real-time freshness.