API Reference
Tickets API
Create, read, update, and manage support tickets programmatically.
8 min read Updated July 2026
Endpoints
GET
/v1/ticketsList ticketsPOST
/v1/ticketsCreate a ticketGET
/v1/tickets/:idRetrieve a ticketPATCH
/v1/tickets/:idUpdate a ticketDELETE
/v1/tickets/:idDelete a ticketGET
/v1/tickets/:id/messagesList messagesPOST
/v1/tickets/:id/messagesSend a replyPOST
/v1/tickets/:id/tagsAdd tagsDELETE
/v1/tickets/:id/tags/:tagRemove a tagCreate a ticket
POST /v1/tickets
Create a new support ticket. If the contact email doesn't exist in your workspace, a new contact record is created automatically.
Request
Request body parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| subject | string | Yes | Ticket subject line |
| body | string | Yes | Full message body (plain text or HTML) |
| contact.email | string | Yes | Customer's email address |
| contact.name | string | No | Customer's display name |
| contact.id | string | No | Existing contact ID (instead of email) |
| channel | string | No | Source channel: api, email, chat, widget. Default: api |
| priority | string | No | urgent, high, normal, low. Default: normal |
| assignee_id | string | No | Assign to agent user ID |
| group_id | string | No | Assign to agent group ID |
| tags | string[] | No | Array of tag strings |
| custom_attributes | object | No | Key/value pairs for custom ticket attributes |
Response
List tickets
GET /v1/tickets
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| status | string | all | open, pending, resolved, all |
| priority | string | — | Filter by priority: urgent, high, normal, low |
| assignee | string | — | Filter by assignee user ID or 'unassigned' |
| group | string | — | Filter by group ID |
| channel | string | — | Filter by channel: email, chat, widget, api |
| tag | string | — | Filter by tag (exact match) |
| created_after | ISO date | — | Filter tickets created after this date |
| created_before | ISO date | — | Filter tickets created before this date |
| sort | string | created_at:desc | Sort field and direction |
| limit | integer | 25 | Results per page (max 100) |
| cursor | string | — | Pagination cursor from previous response |
Update a ticket
PATCH /v1/tickets/:id
Partially update a ticket. Only the fields you include are modified.
Updatable fields
| Field | Type | Notes |
|---|---|---|
| status | string | open, pending, resolved |
| priority | string | urgent, high, normal, low |
| assignee_id | string | Agent user ID; null to unassign |
| group_id | string | Group ID; null to remove group |
| subject | string | |
| custom_attributes | object | Merged with existing; provide key: null to remove a key |
Send a reply
POST /v1/tickets/:id/messages
Message parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| body | string | Yes | Reply content (plain text or HTML) |
| type | string | Yes | outbound (to customer) or note (internal only) |
| author_id | string | No | User ID of the sending agent. Defaults to the API key owner. |
| attachments | object[] | No | Array of attachment objects: {filename, content_type, data (base64)} |
Use
type: "note" to add internal notes visible only to agents — these are never sent to the customer.Ticket object reference
| Field | Type | Description |
|---|---|---|
| id | string | Unique ticket ID (tkt_…) |
| subject | string | Ticket subject line |
| status | string | open | pending | resolved | archived |
| priority | string | urgent | high | normal | low |
| channel | string | email | chat | widget | api | phone |
| contact | object | Contact object: id, name, email, avatar_url |
| assignee | object? | Assigned agent: id, name, email |
| group | object? | Assigned group: id, name |
| tags | string[] | Array of tag strings |
| ai.intent | string | Detected intent category |
| ai.urgency | string | AI-detected urgency: urgent | high | normal | low |
| ai.sentiment | string | frustrated | neutral | positive | unknown |
| ai.confidence | number | AI confidence score 0–100 |
| ai.draft_ready | boolean | Whether an AI draft is available |
| created_at | ISO date | Ticket creation time |
| updated_at | ISO date | Last modification time |
| resolved_at | ISO date? | Time the ticket was resolved (null if open) |
| custom_attributes | object | Custom key/value attributes |