Tickets
Open, track and resolve support tickets from your systems.
Tickets created through the API appear in the dashboard's tickets table alongside the ones your
agents create. Link a ticket to a contact with audienceExternalId to see it next to their
conversation.
Create a ticket
POST /v1/tickets, scope tickets:create.
{
"subject": "Refund not received",
"description": "Customer paid on 2 Oct and is still waiting.",
"priority": "high",
"audienceExternalId": "249912345678:123456789012345"
}| Field | Required | Notes |
|---|---|---|
subject | yes | title is accepted as an older name for the same field. |
description | yes | |
status | no | open (default), in_progress, resolved, closed |
priority | no | low, medium (default), high, urgent |
assigneeId | no | ID of the dashboard user to assign. |
audienceExternalId | no | Links the ticket to a contact. 400 if no such contact exists. |
The response is the ticket. Its ticketId, for example T-261010-0001, is what you use to
fetch and update it.
{
"_id": "6707a1b2c3d4e5f6a7b8c9d0",
"ticketId": "T-261010-0001",
"title": "Refund not received",
"description": "Customer paid on 2 Oct and is still waiting.",
"status": "open",
"priority": "high",
"assigneeId": null,
"audienceId": "6650c1d2e3f4a5b6c7d8e9f0",
"organizationId": "664f0a1b2c3d4e5f6a7b8c9d",
"resolutionDate": null,
"createdAt": "2026-10-10T08:45:35.000Z",
"updatedAt": "2026-10-10T08:45:35.000Z"
}In responses the subject is returned as title.
List tickets
GET /v1/tickets, scope tickets:read. Newest first,
filterable by status and audienceExternalId, paginated with page and limit (max 100).
Check for an open ticket before creating a duplicate:
curl "https://api.enigma-ai.com/v1/tickets?audienceExternalId=249912345678:123456789012345&status=open" \
-H "Authorization: Bearer $ENIGMA_API_KEY"{ "tickets": [ ], "total": 0, "page": 1, "totalPages": 0 }Get and update
GET /v1/tickets/{ticketId}, scopetickets:read.PATCH /v1/tickets/{ticketId}, scopetickets:update. Send only the fields to change.
{ "status": "resolved", "resolutionDate": "2026-10-10T12:00:00.000Z" }