Enneo

Ticket

Get a list of tickets

POST /ticket/search

POST /ticket/search

Get a list of tickets in compact format for performance.

⚠️ IMPORTANT: This endpoint returns a COMPACT version of tickets. The following fields are EXCLUDED from the response:

  • body, bodyPlain, bodyClean
  • attachments
  • template
  • workitem

Also note:

  • customer: Only includes {tagIds: [], tags: []} structure, NOT the full customer object
  • ticketScope=skills activates routing context: spam tickets (spamStatus in auto_spam, auto_programmatic, manual_spam) are excluded automatically. Backlog spam filter (both whitelist in): spam → those statuses; not spam → null, auto_clean, manual_clean.

To get the full ticket data including these fields, use GET /ticket/{id}.

Request body

Search parameters for tickets

limitintegerbodyDefault: 100

The number of items to return

offsetintegerbodyDefault: 0

The number of items to skip

orderByFieldenumbodyDefault: t.id

The field to order by t = ticket i = intent tt = ticket_tag Options: t.id, t.channel, t.subchannelId, t.channelId, t.direction, t.status, t.priority, t.agentId, t.customerId, t.contractId, t.partnerId, t.isCustomerActive, t.aiSupportLevel, i.aiAgentId, t.createdAt, t.modifiedAt, t.firstResponseDueBy, t.dueBy, t.lastMessageAt, t.lastCustomerMessageAt, tt.tagId, t.sentiment, t.language, t.languageCode, t.from

orderByDirectionenumbodyDefault: desc

The direction to order by Options: asc, desc

ticketScopeenumbodyDefault: all

Restrict the list to tickets matching the agent's configured skill tags.

  • all (default): no skill-based restriction — standard backlog search
  • skills: routing-scoped view; activates assignee-bypass so a restricted agent still sees tickets assigned to them even when they carry routing-excluded tags. Also activates NRR-tag stripping (non-routing-relevant tags are ignored for skill-match purposes). Matches the behaviour of Report dashboard ticketScope=skills. Options: all, skills
filtersobject[]body

An array of objects containing filters

Request Example

{
  "limit": 100,
  "offset": 0,
  "orderByField": "t.id",
  "orderByDirection": "asc",
  "ticketScope": "all",
  "filters": [
    {
      "key": "channel",
      "comparator": "in",
      "values": [
        "email"
      ],
      "value": 1609459200,
      "from": 1609459200,
      "to": 1612051200
    }
  ]
}

Responses

200 — Successful operation

Response Example

{
  "tickets": [
    {
      "id": 376189,
      "direction": "in",
      "from": null,
      "fromName": "Tom Mustermann",
      "to": null,
      "ccEmails": [
        "secondlevel@enneo.ai"
      ],
      "bccEmails": [
        "archive@enneo.ai"
      ],
      "replyCcEmails": [
        "string"
      ],
      "replyRecipients": {
        "to": [
          "customer@example.com"
        ],
        "cc": [
          "manager@example.com"
        ],
        "bcc": []
      },
      "subchannelId": 1,
      "externalTicketId": "EXT-12345",
      "sentiment": "positive",
      "language": "English",
      "languageCode": "en",
      "autoExecuteAt": "2026-01-01T12:00:00Z",
      "aiSupportLevel": "unprocessed",
      "spamStatus": "auto_clean",
      "isCustomerActive": true,
      "interface": "internal",
      "priority": "low",
      "channel": "email",
      "channelId": "32291c7e-1cce-4d4c-8269-15e6a6501466",
      "status": "open",
      "summary": "I want to relocate and send you a meter reading",
      "subject": "I want to relocate and send you a meter reading"
    }
  ],
  "total": 21,
  "offset": 0,
  "limit": 100
}

403 — Unauthorized

404 — Ticket not found

500 — Internal error