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=skillsactivates routing context: spam tickets (spamStatusinauto_spam,auto_programmatic,manual_spam) are excluded automatically. Backlog spam filter (both whitelistin): 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: 100The number of items to return
offsetintegerbodyDefault: 0The number of items to skip
orderByFieldenumbodyDefault: t.idThe 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: descThe direction to order by Options: asc, desc
ticketScopeenumbodyDefault: allRestrict 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[]bodyAn 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