Enneo

Ticket

Create a ticket

POST /ticket

POST /ticket

Create a new ticket.

Required fields:

  • channel (only required field!)

Auto-generated if not provided:

  • direction (default: 'in')
  • status (default: 'open')
  • priority (default: 'low')
  • interface (default: 'internal')
  • to, ccEmails, bccEmails (default: [])
  • createdAt (default: current timestamp)
  • aiSupportLevel (default: 'unprocessed')
  • id (auto-generated by database)

Agent assignment:

  • If agentId is set in the request, it is used as-is.
  • Otherwise the ticket is auto-assigned to the calling profile only when the lastAgentRouting setting is enabled AND the caller is a human profile (user, enneo, or enneoPartner). Service workers, code executors, and system users never trigger auto-assignment.
  • When lastAgentRouting is disabled, the ticket stays unassigned regardless of direction.

Query parameters

processenumquery

realtime = immediately run the AI logic synchronously; batch = process the AI asyncronously; false = not run pre-run AI agents. AI will be run on first user view;

Request body

Ticket object to create

fromstringbody

For new tickets, the email/id of the requester, typically the customer name

fromNamestringbody

For new Tickets: The original requester, typically the customer name For outgoing emails: The name of the sender, typically the name of the mailbox (null value). If provided, the name is used, e.g. if an agent wants to send a personalized mail in his own name.

subchannelIdintegerbodyDefault: null

The ID of the subchannel (=mailbox) from which the ticket should be sent. The list of subchannels is available through the /settings/subchannel endpoint

agentIdintegerbodyDefault: null

Optional. Profile ID of the agent the ticket should be assigned to. If omitted, the ticket is auto-assigned to the calling profile only when the lastAgentRouting setting is enabled AND the caller is a human profile (user, enneo, enneoPartner). When the setting is disabled, the ticket stays unassigned.

tostring[]body

For new tickets: Optional, to which mailbox this was sent to. For outgoing emails: The email of the customer that the email should be sent to

ccstring[]body

For new tickets: Optional, to which mailbox this was sent to in cc. For outgoing emails: The cc emails that the email should be sent to

bccstring[]body

Only for outgoing emails: The bcc emails that the email should be sent to

priorityenumbody

Priority of ticket Options: low, medium, high, urgent

channelenumbody

Channel of ticket Options: email, portal, phone, letter, system, chat, walkIn

statusenumbody

Status of ticket Options: open, pending, closed

subjectstringbody

No description.

bodystringbody

Can be either HTML (preferred if available) or plaintext

createdAtstringbody

No description.

firstResponseDueBystringbody

No description.

dueBystringbody

No description.

attachmentsobject[]body

No description.

tagsinteger[]body

No description.

contractIdstringbodyDefault: null

If available, a contract id that was already identified for this ticket. If not set, enneo will attempt to auto-detect the contract

externalTicketIdstringbodyDefault: null

If available, the unique identifier of a third-party ticketing system can be stored in enneo

rawDataobjectbody

Any raw source data from the originating system in the proprietary format. Any data passed here is stored for later use via API or user defined functions.

templateIdintegerbodyDefault: null

If available, a template id to be rendered into ticket body using data provided in templateData parameter.

templateDataobjectbodyDefault: null

Data to be used while rendering template into ticket body.

Request Example

{
  "from": "string",
  "fromName": null,
  "subchannelId": 2,
  "agentId": null,
  "to": [
    "customer@web.de"
  ],
  "cc": [
    "customer@web.de"
  ],
  "bcc": [
    "customer@web.de"
  ],
  "priority": "low",
  "channel": "email",
  "status": "open",
  "subject": "Ticket subject",
  "body": "<p>Ticket body<p>",
  "createdAt": "2021-01-01 00:00:00",
  "firstResponseDueBy": "2021-01-02 00:00:00",
  "dueBy": "2021-01-07 00:00:00",
  "attachments": [
    null
  ],
  "tags": [
    54
  ],
  "contractId": null,
  "externalTicketId": null,
  "rawData": null,
  "templateId": null,
  "templateData": null
}

Responses

200 — Successful operation

Response Example

{
  "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"
}

403 — Unauthorized

500 — Internal error