Pagination
Cursor pages, and the three endpoints that have none.
Lists are cursor-paginated:
{
"data": [],
"meta": { "has_more": true, "next_cursor": "con_9cBe3A1H-SLhW5fONWZ32wb-IIio5Ts3" }
}Pass next_cursor back as starting_after for the next page. Stop when
has_more is false.
curl "https://app.sendkuy.com/api/v1/contacts?limit=50&starting_after=con_9cBe..." \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"limit defaults to 20 and is capped at 100.
The cursor is opaque
It is the last row's id today, and it need not stay that way. Treat it as a string you hand back, not as something to parse, compare or construct.
Three endpoints answer without meta
POST /messages, POST /messages/batch and GET /contact-attributes return
{ "data": [...] } with no meta at all. They are lists, not pages —
nothing was cut off, so there is nothing to page through. Two of them return one
row per element you sent; the third returns every attribute you have defined.
Code that assumes meta exists on every array response will break on exactly
those three.