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
curl https://acme.headoni.app/api/v1/tickets/1247 \
  -H "Authorization: Bearer hd_your_secret_here"

Response

200
{
  "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

StatuserrorMeaning
400invalid_idThe path was not all digits.
401unauthenticatedMissing or invalid token.
403insufficient_scopeToken lacks tickets:read.
404ticket_not_foundNo such ticket on this desk.