All list endpoints use cursor-based pagination. Pagination remains stable when resources are inserted or deleted between requests.
Response structure
{
"data": [...],
"pagination": {
"starting_after": "stp_01kqzcjrpxf27tge33jwvjhkff",
"limit": 10,
"has_more": true,
"next_cursor": "stp_01kqzcjrpxf27tge33jwvjhkfg"
}
}
Query parameters
| Parameter | Type | Default | Description |
|---|
starting_after | string | — | Cursor: the ID of the last resource from the previous page |
limit | integer | 10 | Number of results per page (1–50) |
Iterating through pages
Omit starting_after to fetch the first page. For later pages, pass the previous response’s next_cursor as starting_after. When has_more is false, next_cursor is null.
# First page
curl "https://api.demo.cula.earth/tracking/v1/material-sourcing?limit=20" \
-H "Authorization: Bearer $CULA_ACCESS_TOKEN" \
-H "Cula-Organisation-Id: $CULA_ORGANISATION_ID"
# Next page (use next_cursor from previous response)
curl "https://api.demo.cula.earth/tracking/v1/material-sourcing?limit=20&starting_after=stp_01kqzcjrpxf27tge33jwvjhkfg" \
-H "Authorization: Bearer $CULA_ACCESS_TOKEN" \
-H "Cula-Organisation-Id: $CULA_ORGANISATION_ID"
Cursors are resource IDs, not opaque tokens. You can resume pagination from any known resource ID.