Get A Ticket
Fetch one ticket and its public messages with GET /tickets/:idOrNumber.
Fetch a single ticket on the token's desk, along with its public messages.
Look it up by its per-desk number (the [#1247] token) or by its id. The
number is tried first.
Example
curl https://acme.headoni.app/api/v1/tickets/1247 \
-H "Authorization: Bearer hd_your_secret_here"Response
{
"ticket": {
"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" },
"department": { "id": "1490200000000000001", "name": "Support" },
"ticketType": { "id": "1490100000000000001", "name": "Question" },
"createdAt": "2026-06-04T15:21:09.000Z",
"updatedAt": "2026-06-04T15:40:11.000Z",
"messages": [
{
"id": "1490375649312800769",
"authorKind": "end_user",
"bodyMd": "I loop back to /sign-in after typing my email.",
"createdAt": "2026-06-04T15:21:09.000Z"
}
]
}
}status.internalType is one of open, awaiting_reply, resolved, closed.
authorKind is one of agent, end_user, system, automation.
Errors
| Status | error | Meaning |
|---|---|---|
| 400 | invalid_id | The path was not all digits. |
| 401 | unauthenticated | Missing or invalid token. |
| 403 | insufficient_scope | Token lacks tickets:read. |
| 404 | ticket_not_found | No such ticket on this desk. |