AuralisDocs
OperationsTickets

Get one ticket with its full timeline

Everything the ticket detail view needs in one call: the ticket, its resolved assignee/customer/agent/team names, its SLA state, its own logged time and todo counts, and its comple...

/v1/tickets/{ticket_id}Viewer
Operation id
get_ticket
Access
Any workspace role can call this.
GET/v1/tickets/{ticket_id}

Everything the ticket detail view needs in one call: the ticket, its resolved assignee/customer/agent/team names, its SLA state, its own logged time and todo counts, and its complete event timeline in ascending order.

legal_next_states is the exact set PATCH /v1/tickets/{ticket_id} will accept as a status target. An empty list means the ticket is terminal and only POST /v1/tickets/{ticket_id}/reopen can move it.

events is the whole timeline, oldest first, and it is not paged. It carries customer messages, operator replies, internal notes and every recorded change, each with who made it and when.

Tenancy: the request is scoped to one workspace, and the credential presented is what selects it. A caller with no membership in that workspace is refused with 404, which is indistinguishable from a workspace that does not exist.

Authorisation: any workspace role, including viewer. Reads are open to every member.

Access: Authorization: Bearer carrying either a realm access token or an API key. A key must hold the tickets:read scope, and the workspace role of the person who owns it must meet the floor above.

Authorization

AuthorizationBearer <token>

A realm-issued access token, presented as Authorization: Bearer <token>. It acts as the person who signed in, and every operation resolves their workspace role live from the membership record.

In: header

Path Parameters

ticket_id*Ticket Id
Formatuuid

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/tickets/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "id": "5e8b0c31-7a4d-4f92-b6c8-1d3e2a5f7b90",  "subject": "Card declined at checkout",  "description": "Customer's Visa is declined on every attempt since Tuesday.",  "status": "open",  "priority": "high",  "source": "email",  "assignee_id": "3fe98b76-2409-5003-b75a-93e56b450433",  "assignee_name": "Dana Osei",  "customer_id": "9f1d6c4e-6b6e-4b31-9a5b-2f1c9a4d5e60",  "customer_name": "Sam Okafor",  "customer_email": "sam.okafor@northwind.example",  "team_id": "d907a188-148a-5522-82a6-55798ccdecb6",  "team_name": "Billing",  "tags": [    "billing",    "vip"  ],  "metadata": {    "order_id": "A-1042"  },  "first_response_due": "2026-08-14T12:20:00+00:00",  "resolution_due": "2026-08-15T10:20:00+00:00",  "sla_breached": false,  "sla_policy_id": "b6a0f2d7-4c19-4e63-8f52-7a1b9c0d3e46",  "created_at": "2026-08-14T10:20:00+00:00",  "updated_at": "2026-08-14T10:20:00+00:00",  "legal_next_states": [    "closed",    "on_hold",    "pending",    "solved",    "spam"  ],  "assignee_email": "dana.osei@northwind.example",  "time_total_minutes": 25,  "time_billable_minutes": 25,  "todo_counts": {    "open": 1,    "done": 2,    "overdue": 0  },  "events": [    {      "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",      "kind": "inbound_email",      "body": "My card is declined every time I try to pay.",      "meta": {        "channel": "email",        "external_id": "0100019180a4c1f2"      },      "actor_type": "customer",      "created_at": "2026-08-14T10:20:00+00:00"    },    {      "id": "f0e9d8c7-b6a5-4948-9382-71605f4e3d2c",      "kind": "internal_note",      "body": "Payment provider is returning a soft decline on this BIN.",      "meta": {},      "actor_user_id": "3fe98b76-2409-5003-b75a-93e56b450433",      "actor_type": "user",      "actor_name": "Dana Osei",      "created_at": "2026-08-14T10:41:12+00:00"    }  ]}