Enigma Developers

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"
}
FieldRequiredNotes
subjectyestitle is accepted as an older name for the same field.
descriptionyes
statusnoopen (default), in_progress, resolved, closed
prioritynolow, medium (default), high, urgent
assigneeIdnoID of the dashboard user to assign.
audienceExternalIdnoLinks 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

{ "status": "resolved", "resolutionDate": "2026-10-10T12:00:00.000Z" }

On this page