---
title: "Show a ticket"
method: GET
path: "/tickets/{ticket}"
tags: ["Tickets"]
---

# Show a ticket

`GET /tickets/{ticket}`

## Request

- Base URL: `https://there-there.app/api`
- URL: `https://there-there.app/api/tickets/{ticket}`
- Auth: HTTP bearer

## Path parameters

- `ticket` string, required

## Headers

- `X-Workspace-Id` integer

## Response `200`

Ticket with messages and activities

- object
  - `data` TicketDetail
    - `id` integer
    - `ulid` string
    - `number` integer
    - `subject` string
    - `status` 'open' | 'waiting' | 'closed' | 'spam'
    - `channel` Channel
      - `id` integer
      - `ulid` string
      - `name` string
      - `type` 'email' | 'widget'
      - `color` string
      - `email_address` string, nullable
    - `assignee` User
      - `id` integer
      - `name` string
      - `email` string, email
      - `avatar_url` string, nullable
      - `timezone` string, nullable
    - `assigned_team` Team
      - `id` integer
      - `ulid` string
      - `name` string
      - `description` string, nullable
      - `logo_url` string, nullable
      - `member_count` integer
    - `contact` Contact
      - `id` integer
      - `ulid` string
      - `name` string, nullable
      - `email` string, email
      - `avatar_url` string, nullable
      - `company` ContactCompany
        - `ulid` string
        - `name` string
        - `domain` string, nullable
      - `ticket_count` integer, nullable
      - `last_activity_at` string, date-time, nullable
      - `notes` string, nullable
    - `tags` Tag[]
      - `id` integer
      - `ulid` string
      - `name` string
      - `color` string
    - `custom_fields` TicketCustomField[]: Every custom field that applies to this ticket's channel, whether or not it holds a value. Returned on GET /tickets/{ticket} and on every ticket write response; omitted from the paginated list.
      - `ulid` string
      - `name` string
      - `type` 'text' | 'single_select' | 'multi_select'
      - `value` string, nullable: Set for text fields only; null for the two select types.
      - `selected_option_ulids` string[]: Empty for text fields and for select fields with no value.
      - `options` TicketCustomFieldOption[]: The options an admin defined, in the order they arranged them. Empty for text fields.
        - `ulid` string
        - `name` string
        - `color` string, nullable
        - `icon` string, nullable
    - `latest_message_preview` string, nullable
    - `summary` string, nullable
    - `title` string, nullable
    - `from_address` string, nullable
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `last_activity_at` string, date-time
    - `messages` Message[]
      - `id` integer
      - `ulid` string
      - `type` 'inbound' | 'outbound' | 'note'
      - `body_html` string
      - `body_text` string, nullable
      - `sender` object
        - `id` integer
        - `type` 'contact' | 'user'
        - `name` string, nullable
        - `email` string, nullable
        - `avatar_url` string, nullable
      - `attachments` object[]: Files sent alongside the message. Fetch `url` (or `download_url`) with the same Bearer token, see `GET /attachments/{media}`.
        - `id` integer
        - `name` string
        - `url` string, uri
        - `download_url` string, uri
        - `size` integer
        - `mime_type` string
      - `inline_images` object[]: Images embedded inside `body_html` (typically bug screenshots customers paste into emails). Each item exposes a stable `url` matching the `<img src>` in the body, plus a `download_url` that forces a file download. Use these URLs with the same Bearer token to fetch the binary, see `GET /attachments/{media}`.
        - `id` integer
        - `name` string
        - `mime_type` string
        - `size` integer
        - `content_id` string, nullable
        - `url` string, uri
        - `download_url` string, uri
      - `is_forward` boolean
      - `send_status` 'demo' | 'pending' | 'sending' | 'sent' | 'failed', nullable: Delivery state of an outbound email. `null` for inbound messages, notes and support bubble replies, which have no delivery of their own. `sending` means a retry is in flight.
      - `created_at` string, date-time
    - `activities` Activity[]
      - `id` integer
      - `ulid` string
      - `type` string
      - `user` User
        - `id` integer
        - `name` string
        - `email` string, email
        - `avatar_url` string, nullable
        - `timezone` string, nullable
      - `properties` object, nullable
      - `description` string
      - `created_at` string, date-time

## Other responses

- `403`: Not allowed
- `404`: Resource not found

---

[API](https://skmtc.dev/there-there/apis/there-there-api.md) · [All operations](https://skmtc.dev/there-there/apis/there-there-api/llms.txt) · [OpenAPI document](https://skmtc.dev/there-there/apis/there-there-api/revisions/1811fb0febc1?raw)
