Pagination
Lists move by cursor. Ask with ?limit= (25 by default, up to 100; above that it is reduced) and follow links.next, or send meta.next_cursor as ?cursor=, until it is null. Rows created or changed during the read never make you repeat or skip the others.
{
"data": [],
"links": { "next": "https://api.tickply.com/v1/orders?limit=25&cursor=aWQ6MTIz" },
"meta": { "next_cursor": "aWQ6MTIz", "limit": 25 }
}
Syncing
Lists with a key accept ?updated_since= in ISO 8601 and return only what changed at or after that time. Keep the time of your last sync and ask from there.
Webhook deliveries come newest first; everything else, oldest first. All dates are ISO 8601 in UTC, such as 2026-11-01T12:00:00Z. Money is in cents, in the currency of the event, course or order.
A limit below 1 or not a number goes back to 25, without an error. A cursor or updated_since that cannot be read gives 422 validation_failed, with the field in errors.
Lists that come whole
The ticket types of an event or course (/events/{event}/offers, /courses/{course}/offers) and the list of webhook events (/webhook-events) are short: they come whole, in data, without links, meta or updated_since.
The public list of an organizer's events and courses goes by date, so a new item between two pages can repeat or skip one; it is a short list, so ask for it at once.