List responses API
This article and the rest of the API documentation in this section are written for a technical audience — integrators and developers connecting external systems to Tickiti. Familiarity with HTTP, REST, JSON and bearer-token authentication is assumed.
The responses endpoint returns just the conversation on a ticket — the same responses array Show ticket returns, without the ticket header, participants or links. Use it when you already know the ticket and only need its replies: to read the thread including internal staff notes, or to enumerate a response’s attachments before downloading one.
Endpoint
POST /api/v1/tickets/responsesHeaders
Authorization: Bearer YOUR_TOKEN— required. Token must have thetickets:readability. Atickets:writetoken also works (write implies read).Content-Type: application/json— required. NoIdempotency-Keyis needed (this is a read).
Body
Required fields:
ticket_number— the 6-digit number of the ticket whose responses to list, as a string. Alternatively sendticket_id, the ticket’s internal id. Send exactly one of the two. The ticket must exist and be visible to the acting user.
Optional fields:
fields— an array choosing which of the heavy response fields to return: any ofhtml,plain_text,attachments. Defaults to all three. The metadata fields (id, flags, author, dates,audit,body_chars) are always returned.max_body_chars— a whole number. Cuts each response’shtmlandplain_textto this many characters; a field that was cut gainshtml_truncated: trueorplain_text_truncated: true.
Example
curl -X POST https://support.sole-provider.example/api/v1/tickets/responses \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ticket_number": "220009",
"fields": ["plain_text"],
"max_body_chars": 4000
}'Successful response
An ordered responses array (pinned first, then oldest to newest), identical in shape to the array Show ticket returns — see Show ticket API for what each field means, including plain_text, body_chars, audit and is_audit_only. Includes internal staff notes (is_internal: true), which is the value over the summary-only List tickets endpoint.
{
"ok": true,
"data": {
"ticket_number": 220009,
"responses": [
{
"id": "41",
"is_internal": true,
"is_pinned": false,
"staff_response": true,
"created_by_email": "[email protected]",
"created_at": "2026-05-02T10:05:11+00:00",
"updated_at": "2026-05-02T10:05:11+00:00",
"is_email_sourced": false,
"audit": null,
"is_audit_only": false,
"body_chars": 38,
"html": "<p>Internal note: replacement authorised.</p>",
"plain_text": "Internal note: replacement authorised.",
"attachments": []
}
]
}
}Error responses
422 validation_failed— neither or both ofticket_numberandticket_id, or an invalidfieldsvalue ormax_body_chars.404 not_found— no ticket has that number or id.401 unauthenticated— bad or missing token.403 forbidden— token lacks thetickets:read(ortickets:write) ability, the user it acts as lacks access to the ticket, or the token owner is not a staff account.
What happens server-side
- Tickiti locates the ticket by
ticket_numberorticket_idand applies the same access check as the staff interface. - It returns every non-deleted response on the ticket — public and internal — each with its attachment metadata, projected per
fieldsandmax_body_chars.
To search responses across many tickets at once, use the Cross-ticket responses API; to read one response by id, move responses between tickets or edit and delete them, see the Ticket operations API.