Replies
Replies are messages attached to a ticket. They represent the conversation between agents, customers, and AI. You can also create internal notes that are only visible to your team.
List Replies
GET /api/v1/external/tickets/{ticket_id}/replies
Returns all replies for a ticket in chronological order.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
per_page |
integer | 25 | Results per page (max: 100) |
cursor |
string | — | Cursor for next page |
Example Response
{
"data": [
{
"id": "01912345-aaaa-7abc-def0-123456789abc",
"ticket_id": "01912345-6789-7abc-def0-123456789abc",
"body": "Hi Jane, I can see the issue with your payment. Let me look into this for you.",
"is_internal_note": false,
"author_type": "agent",
"author": {
"id": "01912345-3333-7abc-def0-123456789abc",
"name": "Alex Johnson",
"email": "alex@company.com"
},
"attachments": [],
"created_at": "2025-01-15T10:15:00Z"
},
{
"id": "01912345-bbbb-7abc-def0-123456789abc",
"ticket_id": "01912345-6789-7abc-def0-123456789abc",
"body": "Thank you Alex, I appreciate the quick response!",
"is_internal_note": false,
"author_type": "customer",
"author": {
"id": "01912345-0000-7abc-def0-123456789abc",
"name": "Jane Smith",
"email": "jane@example.com"
},
"attachments": [],
"created_at": "2025-01-15T10:20:00Z"
}
],
"meta": {
"per_page": 25,
"has_more": false,
"next_cursor": null
}
}
Create a Reply
POST /api/v1/external/tickets/{ticket_id}/replies
Add a reply to an existing ticket.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
body |
string | Yes | Reply content (Markdown supported) |
is_internal_note |
boolean | No | If true, only visible to agents. Default: false |
author_type |
string | No | agent or customer. Default: agent |
Example: Agent Reply
{
"body": "Hi Jane,\n\nI've checked your account and the payment issue was caused by an expired card on file. I've updated it and the charge has gone through successfully.\n\nYour plan is now upgraded to **Professional**.\n\nLet me know if you need anything else!",
"is_internal_note": false
}
Example: Internal Note
Internal notes are visible only to your team — the customer never sees them.
{
"body": "Checked Stripe dashboard — card was expired since Dec 2024. Customer has been notified to update card. Monitoring for next billing cycle.",
"is_internal_note": true
}
Example: Customer Reply
When your external system needs to post a message on behalf of the customer:
{
"body": "Thanks, that fixed it! I can see the Professional plan features now.",
"author_type": "customer"
}
Response (201 Created)
{
"data": {
"id": "01912345-cccc-7abc-def0-123456789abc",
"ticket_id": "01912345-6789-7abc-def0-123456789abc",
"body": "Hi Jane, I've checked your account...",
"is_internal_note": false,
"author_type": "agent",
"author": {
"id": "01912345-3333-7abc-def0-123456789abc",
"name": "Alex Johnson",
"email": "alex@company.com"
},
"attachments": [],
"created_at": "2025-01-15T10:25:00Z"
}
}
Hint: Creating a reply on a ticket that's in
newstatus will automatically transition it toopen.
Hint: Markdown is supported in reply bodies. Use
**bold**,*italic*,`code`, and fenced code blocks for formatted responses.
Reply Types
| Author Type | Description |
|---|---|
agent |
Reply from a support agent |
customer |
Reply from the customer |
system |
Automated system message (e.g., status change notification) |
ai |
AI-generated reply (auto or suggested) |
Attachments in Replies
Replies can include attachments. When listing replies, each reply's attachments array contains:
{
"attachments": [
{
"id": "01912345-dddd-7abc-def0-123456789abc",
"file_name": "screenshot.png",
"file_size": 245632,
"mime_type": "image/png",
"download_url": "https://s3.amazonaws.com/tiqora/..."
}
]
}
Note: Download URLs are pre-signed S3 URLs with a 1-hour expiry. Fetch them promptly or request fresh URLs by re-fetching the reply.
Best Practices
Use internal notes for team coordination — They keep context within the ticket without cluttering the customer's view.
Include relevant context in replies — When posting replies via API, include enough context so agents can understand the conversation without switching to your external system.
Set the correct author_type — Use
customerwhen forwarding customer messages from your platform, andagentfor automated responses from your system.