List Tickets
List tickets on a desk with filters and keyset pagination.
List tickets on the token's desk, newest first. Filter by requester or status, and page through results with a keyset cursor. The list returns summaries, with no message bodies. To read a ticket in full, call Get A Ticket.
Query
Example
curl "https://acme.headoni.app/api/v1/tickets?status=open&limit=20" \
-H "Authorization: Bearer hd_your_secret_here"Response
{
"tickets": [
{
"id": "1490375649312800768",
"number": 1247,
"subject": "Login broken on staging",
"priority": "high",
"status": { "id": "1490300000000000001", "label": "Open", "internalType": "open" },
"requester": { "email": "alice@example.com", "name": "Alice" },
"createdAt": "2026-06-04T15:21:09.000Z",
"updatedAt": "2026-06-04T15:40:11.000Z"
}
],
"nextCursor": "1490375649312800768"
}Pagination
The list is ordered by ticket id, newest first. When nextCursor is not null,
pass it back as cursor to fetch the next page. A null nextCursor means you
have reached the end.
curl "https://acme.headoni.app/api/v1/tickets?status=open&limit=20&cursor=1490375649312800768" \
-H "Authorization: Bearer hd_your_secret_here"Errors
| Status | error | Meaning |
|---|---|---|
| 400 | invalid_query | A parameter is malformed. See issues. |
| 400 | invalid_status | status is neither a keyword nor a numeric id. |
| 401 | unauthenticated | Missing or invalid token. |
| 403 | insufficient_scope | Token lacks tickets:read. |