API reference / ZiloDesk
ZiloDesk
Tickets and replies.
Base URL https://api.zilomail.in
List tickets#
GET/v1/desk/tickets
Latest activity first.
Query
statusstringUp to 30 characters.
minebooleanqstringUp to 200 characters.
limitintegerHow many to return (1–200). Default 50.
cursorstringThe
next value from the previous page. Up to 500 characters.Answer · 200 OK
dataarray of objectidstringnumberstringsubjectstringstatusstringNEW, OPEN, PENDING, RESOLVED or CLOSED.
prioritystringrequesterobjectemailstringnamestring | nullcustomerIdstring | nullassigneeobject | nullidstring | nullTheir ZiloOne user id.
emailstring | nullnamestringtagsarray of stringchannelstringfirstResponseDuestring | nullresolveDuestring | nulllastMessageAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
createdAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
messagesarray of objectOn GET /v1/desk/tickets/{id}.
idstringkindenum | stringOne of
CUSTOMER, AGENT, NOTE.fromstring | nulltextstringatstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
nextstring | nullPass as
cursor for the next page; null on the last.curl "https://api.zilomail.in/v1/desk/tickets?limit=20" \
-H "Authorization: Bearer $ZILO_TOKEN"Answer · 200 OK
{
"data": [
{
"id": "string",
"number": "string",
"subject": "string",
"status": "string",
"priority": "string",
"requester": {
"email": "string",
"name": "string"
},
"customerId": "string",
"assignee": {
"id": "string",
"email": "string",
"name": "string"
},
"tags": [
"string"
],
"channel": "string",
"firstResponseDue": "2026-10-17T09:30:00.000Z",
"resolveDue": "2026-10-17T09:30:00.000Z",
"lastMessageAt": "2026-10-17T09:30:00.000Z",
"createdAt": "2026-10-17T09:30:00.000Z",
"messages": [
{
"id": "string",
"kind": "CUSTOMER",
"from": "string",
"text": "string",
"at": "2026-10-17T09:30:00.000Z"
}
]
}
],
"next": "string"
}Try it
Sign in to call it as yourself.
Get a ticket#
GET/v1/desk/tickets/{id}
With its conversation (notes included).
Path
idstringrequiredAn id this API gave out. Up to 64 characters.
Answer · 200 OK
idstringnumberstringsubjectstringstatusstringNEW, OPEN, PENDING, RESOLVED or CLOSED.
prioritystringrequesterobjectemailstringnamestring | nullcustomerIdstring | nullassigneeobject | nullidstring | nullTheir ZiloOne user id.
emailstring | nullnamestringtagsarray of stringchannelstringfirstResponseDuestring | nullresolveDuestring | nulllastMessageAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
createdAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
messagesarray of objectOn GET /v1/desk/tickets/{id}.
idstringkindenum | stringOne of
CUSTOMER, AGENT, NOTE.fromstring | nulltextstringatstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
curl "https://api.zilomail.in/v1/desk/tickets/ID" \
-H "Authorization: Bearer $ZILO_TOKEN"Answer · 200 OK
{
"id": "string",
"number": "string",
"subject": "string",
"status": "string",
"priority": "string",
"requester": {
"email": "string",
"name": "string"
},
"customerId": "string",
"assignee": {
"id": "string",
"email": "string",
"name": "string"
},
"tags": [
"string"
],
"channel": "string",
"firstResponseDue": "2026-10-17T09:30:00.000Z",
"resolveDue": "2026-10-17T09:30:00.000Z",
"lastMessageAt": "2026-10-17T09:30:00.000Z",
"createdAt": "2026-10-17T09:30:00.000Z",
"messages": [
{
"id": "string",
"kind": "CUSTOMER",
"from": "string",
"text": "string",
"at": "2026-10-17T09:30:00.000Z"
}
]
}Try it
Sign in to call it as yourself.
Open a ticket#
POST/v1/desk/tickets
A request that didn't come by mail (a call, a visit, your own form).
Body
subjectstringrequiredUp to 300 characters.
emailstringrequiredThe customer's email: replies go there. Up to 254 characters.
namestringUp to 120 characters.
bodystringrequiredUp to 20000 characters.
priorityenumOne of
LOW, NORMAL, HIGH, URGENT.assignToMebooleanDefault false.
Answer · 201 Created
idstringnumberstringsubjectstringstatusstringNEW, OPEN, PENDING, RESOLVED or CLOSED.
prioritystringrequesterobjectemailstringnamestring | nullcustomerIdstring | nullassigneeobject | nullidstring | nullTheir ZiloOne user id.
emailstring | nullnamestringtagsarray of stringchannelstringfirstResponseDuestring | nullresolveDuestring | nulllastMessageAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
createdAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
messagesarray of objectOn GET /v1/desk/tickets/{id}.
idstringkindenum | stringOne of
CUSTOMER, AGENT, NOTE.fromstring | nulltextstringatstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
curl -X POST "https://api.zilomail.in/v1/desk/tickets" \
-H "Authorization: Bearer $ZILO_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"subject": "string",
"email": "string",
"body": "string"
}'Answer · 201 Created
{
"id": "string",
"number": "string",
"subject": "string",
"status": "string",
"priority": "string",
"requester": {
"email": "string",
"name": "string"
},
"customerId": "string",
"assignee": {
"id": "string",
"email": "string",
"name": "string"
},
"tags": [
"string"
],
"channel": "string",
"firstResponseDue": "2026-10-17T09:30:00.000Z",
"resolveDue": "2026-10-17T09:30:00.000Z",
"lastMessageAt": "2026-10-17T09:30:00.000Z",
"createdAt": "2026-10-17T09:30:00.000Z",
"messages": [
{
"id": "string",
"kind": "CUSTOMER",
"from": "string",
"text": "string",
"at": "2026-10-17T09:30:00.000Z"
}
]
}Try it
Sign in to call it as yourself.
Reply#
POST/v1/desk/tickets/{id}/replies
Mailed to the customer from the support mailbox, in the ticket's thread. note: true keeps it inside the team.
Path
idstringrequiredAn id this API gave out. Up to 64 characters.
Body
bodystringrequiredUp to 20000 characters.
notebooleanDefault false.
statusenumThe ticket's status after a reply (default PENDING). One of
OPEN, PENDING, RESOLVED, CLOSED.Answer · 201 Created
idstringnumberstringsubjectstringstatusstringNEW, OPEN, PENDING, RESOLVED or CLOSED.
prioritystringrequesterobjectemailstringnamestring | nullcustomerIdstring | nullassigneeobject | nullidstring | nullTheir ZiloOne user id.
emailstring | nullnamestringtagsarray of stringchannelstringfirstResponseDuestring | nullresolveDuestring | nulllastMessageAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
createdAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
messagesarray of objectOn GET /v1/desk/tickets/{id}.
idstringkindenum | stringOne of
CUSTOMER, AGENT, NOTE.fromstring | nulltextstringatstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
curl -X POST "https://api.zilomail.in/v1/desk/tickets/ID/replies" \
-H "Authorization: Bearer $ZILO_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"body": "string"
}'Answer · 201 Created
{
"id": "string",
"number": "string",
"subject": "string",
"status": "string",
"priority": "string",
"requester": {
"email": "string",
"name": "string"
},
"customerId": "string",
"assignee": {
"id": "string",
"email": "string",
"name": "string"
},
"tags": [
"string"
],
"channel": "string",
"firstResponseDue": "2026-10-17T09:30:00.000Z",
"resolveDue": "2026-10-17T09:30:00.000Z",
"lastMessageAt": "2026-10-17T09:30:00.000Z",
"createdAt": "2026-10-17T09:30:00.000Z",
"messages": [
{
"id": "string",
"kind": "CUSTOMER",
"from": "string",
"text": "string",
"at": "2026-10-17T09:30:00.000Z"
}
]
}Try it
Sign in to call it as yourself.
Change a ticket#
PATCH/v1/desk/tickets/{id}
Path
idstringrequiredAn id this API gave out. Up to 64 characters.
Body
statusstringUp to 20 characters.
prioritystringUp to 20 characters.
assigneestring | nulltagsarray of stringAnswer · 200 OK
idstringnumberstringsubjectstringstatusstringNEW, OPEN, PENDING, RESOLVED or CLOSED.
prioritystringrequesterobjectemailstringnamestring | nullcustomerIdstring | nullassigneeobject | nullidstring | nullTheir ZiloOne user id.
emailstring | nullnamestringtagsarray of stringchannelstringfirstResponseDuestring | nullresolveDuestring | nulllastMessageAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
createdAtstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
messagesarray of objectOn GET /v1/desk/tickets/{id}.
idstringkindenum | stringOne of
CUSTOMER, AGENT, NOTE.fromstring | nulltextstringatstringISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
curl -X PATCH "https://api.zilomail.in/v1/desk/tickets/ID" \
-H "Authorization: Bearer $ZILO_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Answer · 200 OK
{
"id": "string",
"number": "string",
"subject": "string",
"status": "string",
"priority": "string",
"requester": {
"email": "string",
"name": "string"
},
"customerId": "string",
"assignee": {
"id": "string",
"email": "string",
"name": "string"
},
"tags": [
"string"
],
"channel": "string",
"firstResponseDue": "2026-10-17T09:30:00.000Z",
"resolveDue": "2026-10-17T09:30:00.000Z",
"lastMessageAt": "2026-10-17T09:30:00.000Z",
"createdAt": "2026-10-17T09:30:00.000Z",
"messages": [
{
"id": "string",
"kind": "CUSTOMER",
"from": "string",
"text": "string",
"at": "2026-10-17T09:30:00.000Z"
}
]
}Try it
Sign in to call it as yourself.