Tickets

By Orqestra · Published September 2, 2026

Overview

Work items attached to a contact or conversation, for issues that outlive a single chat session. Notes on a ticket are internal — they are never delivered to the customer.

5 endpoints. Requires tickets.view or tickets.manage or ticket_notes.manage on the token.

MethodPathWhat it does
GET/ticketsList tickets
POST/ticketsCreate a ticket
GET/tickets/{id}Get ticket details
PUT/tickets/{id}Update a ticket
POST/tickets/{id}/notesAdd a ticket note

Endpoints

GET /tickets

List tickets

List tickets with pagination and optional filtering. Requires `tickets.view` permission.

Requires the tickets.view permission.

ParameterInTypeRequiredDescription
pagequeryintegeroptionalPage number Defaults to 1.
limitqueryintegeroptionalItems per page Defaults to 20.
statusqueryOPEN · IN_PROGRESS · RESOLVED · CLOSEDoptionalFilter by status
assigneeIdquerystringoptionalFilter by agent ID
contactIdquerystringoptionalFilter by contact ID

Example

curl -X GET "https://orqestra.id/api/v2/tickets" \
  -H "Authorization: Bearer $ORQESTRA_TOKEN"

Responds with 200 · 401 · 403. Try it in the playground →


POST /tickets

Create a ticket

Create a support ticket. Contact is resolved by contactId, contactWaId (phone number), or contactIgId (Instagram ID). Requires `tickets.manage` permission.

Requires the tickets.manage permission.

Request body

FieldTypeRequiredDescription
contactWaIdstringoptionalContact WhatsApp ID (phone number)
contactIgIdstringoptionalContact Instagram ID
contactIdstringoptionalContact ID (alternative to contactWaId/contactIgId)
titlestringrequiredTicket title
priorityobjectoptionalTicket priority
statusobjectoptionalInitial status
assigneeIdstringoptionalAgent ID to assign
descriptionstringoptionalInitial note body
chatIdstringoptionalLink to existing chat

Example

curl -X POST "https://orqestra.id/api/v2/tickets" \
  -H "Authorization: Bearer $ORQESTRA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Example"
  }'

Responds with 200 · 400 · 401 · 403 · 429. Try it in the playground →


GET /tickets/{id}

Get ticket details

Get full ticket details including notes. Requires `tickets.view` permission.

Requires the tickets.view permission.

ParameterInTypeRequiredDescription
idpathstringrequiredTicket ID or Ticket Number

Example

curl -X GET "https://orqestra.id/api/v2/tickets/$id" \
  -H "Authorization: Bearer $ORQESTRA_TOKEN"

Responds with 200 · 401 · 403 · 404. Try it in the playground →


PUT /tickets/{id}

Update a ticket

Update ticket status, priority, or assignee. Requires `tickets.manage` permission.

Requires the tickets.manage permission.

ParameterInTypeRequiredDescription
idpathstringrequiredTicket ID or Ticket Number

Request body

FieldTypeRequiredDescription
statusOPEN · IN_PROGRESS · RESOLVED · CLOSEDoptionalNew ticket status
priorityLOW · MEDIUM · HIGH · URGENToptionalNew priority
assigneeIdstringoptionalAgent ID to reassign

Example

curl -X PUT "https://orqestra.id/api/v2/tickets/$id" \
  -H "Authorization: Bearer $ORQESTRA_TOKEN"

Responds with 200 · 400 · 401 · 403 · 404 · 429. Try it in the playground →


POST /tickets/{id}/notes

Add a ticket note

Add an internal note to a ticket. Requires `tickets.manage` permission.

Requires the ticket_notes.manage permission.

ParameterInTypeRequiredDescription
idpathstringrequiredTicket ID or Ticket Number

Request body

FieldTypeRequiredDescription
bodystringrequiredNote content
authorIdstringoptionalOptional author user ID

Example

curl -X POST "https://orqestra.id/api/v2/tickets/$id/notes" \
  -H "Authorization: Bearer $ORQESTRA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Hello from Orqestra"
  }'

Responds with 200 · 401 · 403 · 404 · 429. Try it in the playground →