Docs Replies

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 new status will automatically transition it to open.

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

  1. Use internal notes for team coordination — They keep context within the ticket without cluttering the customer's view.

  2. 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.

  3. Set the correct author_type — Use customer when forwarding customer messages from your platform, and agent for automated responses from your system.