Getting started
Pagination and formats
Cursor pagination for lists, the JSON request and response format, timestamps and how v1 changes.
Cursor pagination
Lists use cursor pagination: pass per_page (1-100, default 25) and follow meta.next_cursor as ?cursor=... (or the links.next URL) until it is null.
{
"data": [
{
"object": "tag",
"id": "01j9x0a1b2c3d4e5f6g7h8j9k0",
"name": "Billing",
"slug": "billing",
"color": "#6366f1",
"created_at": "2026-01-15T10:24:07Z"
}
],
"links": {
"first": null,
"last": null,
"prev": null,
"next": "https://zono.support/api/v1/tags?cursor=eyJpZCI6IjAxajl4MnAzcTQiLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9"
},
"meta": {
"path": "https://zono.support/api/v1/tags",
"per_page": 25,
"next_cursor": "eyJpZCI6IjAxajl4MnAzcTQiLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9",
"prev_cursor": null
}
}Request and response format
Requests and responses are JSON. Timestamps are ISO-8601 in UTC. Single objects are returned as the object itself; lists as {"data": [...], "links": {...}, "meta": {...}}. Fields are only ever added to v1, never renamed or removed.
Send Accept: application/json, and Content-Type: application/json with a body.
Versioning
The version is in the path: https://zono.support/api/v1. Fields are only ever added to v1, never renamed or removed, so ignore fields you do not know. Webhook payloads carry api_version (v1).