Tickets
Fetches a single ticket by its numeric id and returns the full ticket object: lifecycle status, priority, assignee and sender metadata, labels, the latest non-activity message, and an embedded messages array. Use this to render a ticket detail view or to read current state before mutating it (assign, toggle priority/status, update type). Obtain the id from GET /api/ext/omni_v2/ticket or the create-ticket response.
curl --request GET \
--url 'https://api.nabrah.ai/api/ext/omni_v2/ticket/<id>' \
--header 'X-API-Key: <your-api-key>'{
"account_id": 0,
"additional_attributes": {},
"agent_last_seen_at": 0,
"assignee_last_seen_at": 0,
"can_reply": false,
"contact_last_seen_at": 0,
"created_at": 0,
"custom_attributes": {},
"first_reply_created_at": 0,
"id": 0,
"inbox_id": 0,
"labels": [
"string"
],
"last_activity_at": 0,
"last_non_activity_message": {
"account_id": 0,
"additional_attributes": {},
"content": "string",
"content_attributes": {},
"content_type": "string",
"conversation": {
"assignee_id": 0,
"contact_inbox": {
"source_id": null
},
"last_activity_at": 0,
"unread_count": 0
},
"conversation_id": 0,
"created_at": 0,
"external_source_ids": {},
"id": 0,
"inbox_id": 0,
"message_type": 0,
"private": false,
"processed_message_content": "string",
"sender": {
"availability_status": "string",
"available_name": "string",
"avatar_url": "string",
"id": 0,
"name": "string",
"thumbnail": "string",
"type": "string",
"additional_attributes": {},
"blocked": false,
"created_at": 0,
"custom_attributes": {},
"email": "string",
"identifier": "string",
"last_activity_at": 0,
"phone_number": "string"
},
"sender_id": 0,
"sender_type": "string",
"sentiment": {},
"source_id": "string",
"status": "string",
"updated_at": "string"
},
"messages": [
{
"account_id": 0,
"additional_attributes": {},
"content": "string",
"content_attributes": {},
"content_type": "string",
"conversation": {
"assignee_id": 0,
"contact_inbox": null,
"last_activity_at": 0,
"unread_count": 0
},
"conversation_id": 0,
"created_at": 0,
"external_source_ids": {},
"id": 0,
"inbox_id": 0,
"message_type": 0,
"private": false,
"processed_message_content": "string",
"sender": {
"availability_status": "string",
"available_name": "string",
"avatar_url": "string",
"id": 0,
"name": "string",
"thumbnail": "string",
"type": "string",
"additional_attributes": {},
"blocked": false,
"created_at": 0,
"custom_attributes": {},
"email": "string",
"identifier": "string",
"last_activity_at": 0,
"phone_number": "string"
},
"sender_id": 0,
"sender_type": "string",
"sentiment": {},
"source_id": "string",
"status": "string",
"updated_at": "string"
}
],
"meta": {
"channel": "string",
"hmac_verified": false,
"sender": {
"additional_attributes": {},
"availability_status": "string",
"blocked": false,
"created_at": 0,
"custom_attributes": {},
"email": "string",
"id": 0,
"identifier": "string",
"last_activity_at": 0,
"name": "string",
"phone_number": "string",
"thumbnail": "string"
},
"assignee": {
"email": "string",
"available_name": "string",
"name": "string"
}
},
"muted": false,
"priority": "string",
"sla_policy_id": 0,
"snoozed_until": 0,
"status": "string",
"timestamp": 0,
"unread_count": 0,
"updated_at": 0
}Core ticket fields plus meta.sender (the contact) and meta.assignee (the assigned user). can_reply indicates whether a reply is currently allowed on the channel.
idinbox_idstatusprioritycan_replylabelsmetasnoozed_untilunread_countmessages[]Embedded recent messages. For the full, paginated message history use GET /ticket/{id}/messages with the before cursor.
Timestamp fields are Unix epoch seconds.
X-API-KeystringheaderrequiredYour workspace API key. Create one in the dashboard under API keys.
idintegerrequiredNumeric identifier of the ticket to retrieve.
Comes from the id field of GET /api/ext/omni_v2/ticket list items, POST /ticket/filter results, or the create-ticket response.
Successful Response
application/json
Validation Error
application/json