---
title: "Retrieve a thread"
method: GET
path: "/api/v1/threads/{thread}"
---

# Retrieve a thread

`GET /api/v1/threads/{thread}`

Returns the full thread record for the given thread ID. The authenticated user
must own the thread or be a member of the workspace it belongs to.

Use this endpoint to fetch the current state of a single thread, including its
title, description, and metadata. To list many threads, use the list endpoint
with cursor-based pagination.

## Path parameters

- `thread` string, required

## Response `200`

Successful response

- Thread — A chat thread, representing a conversation channel that can be owned by a user, team, or agent and may contain messages, participants, and AI agent activity.
  - `agent_user` string — ID of the agent that owns this thread (`agt_...`). `null` for user-owned or team-owned threads.
  - `created_at` string, date-time — When the thread was created (ISO 8601).
  - `creator` User — A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.
    - `alias` string — Short handle or alias for the user. `null` if not set.
    - `app` string — ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.
    - `app_name` string — Display name of the user's app. `null` when the app association was not preloaded by the caller.
    - `email` string — Email address of the user.
    - `id` string, required — User ID (`usr_...`).
    - `is_system_user` boolean — `true` if this account is an internal system user rather than a human. System users are created automatically by the platform.
    - `metadata` object — Arbitrary key-value metadata attached to the user. Defaults to an empty object.
    - `name` string — Full display name of the user. `null` if the user has not set a name.
    - `org` string — ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.
    - `org_name` string — Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.
    - `org_role` string — Role of the user within their organization. One of `"admin"`, `"member"`, or `"viewer"`. `null` when the user is not a member of any organization.
    - `sandbox` string — ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.
    - `sandbox_name` string — Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.
  - `description` string — Optional description or purpose statement for the thread. `null` if not set.
  - `id` string, required — Thread ID (`thr_...`).
  - `is_channel` boolean — Whether this thread operates as a channel — a multi-member broadcast-style conversation.
  - `is_default` boolean — Whether this is the default thread for its owner. Each user or team has at most one default thread.
  - `is_transient` boolean — Whether this thread is ephemeral and may be deleted automatically after a period of inactivity or when its TTL expires.
  - `is_unlisted` boolean — Whether this thread is hidden from public discovery. Unlisted threads are accessible only to direct participants.
  - `key` string — Application-defined stable key that uniquely identifies the thread within its scope. Useful for idempotent creation. `null` if not set.
  - `last_activity` string, date-time — When the last message or activity occurred in this thread. Present only when activity enrichment is requested.
  - `metadata` object — Arbitrary key-value metadata attached to the thread. Shape is application-defined; `null` if no metadata has been set.
  - `muted` boolean — Whether the authenticated user has muted notifications for this thread. `true` suppresses all notification delivery.
  - `org` string — ID of the organization this thread belongs to (`org_...`). `null` for threads outside an org context.
  - `parent_message` Message — A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.
    - `actors` Actor[] — Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.
      - `alias` string — Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.
      - `id` string — Composite actor identifier. Format is `"user-<usr_...>"` for human users or `"agent-<agi_...>"` for agents.
      - `name` string — Display name of the actor shown in the UI. `null` if no name is set.
      - `profile_picture` ImageSource — Resolved metadata for an image, including its delivery URL, dimensions, and optional references to the underlying storage file or media record.
        - `file` string — ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.
        - `height` integer — Height of the image in pixels. `null` if not known.
        - `media` string — ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.
        - `mime_type` string — MIME type of the image, e.g. `"image/png"` or `"image/jpeg"`. `null` if not known.
        - `refresh_url` string — Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.
        - `url` string — Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.
        - `width` integer — Width of the image in pixels. `null` if not known.
    - `agent` string — ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.
    - `attachments` Attachment[] — Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.
      - `content_type` string — MIME type of the attached file, e.g. `"image/png"` or `"application/pdf"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.
      - `description` string — Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.
      - `filename` string — Original filename of the attached file, e.g. `"report.pdf"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.
      - `height` integer — Height in pixels of the media item. Present on `media` type only. `null` otherwise.
      - `id` string, required — Unique identifier for this attachment within the message.
      - `image_height` integer — Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.
      - `image_source` ImageSource — Resolved metadata for an image, including its delivery URL, dimensions, and optional references to the underlying storage file or media record.
        - `file` string — ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.
        - `height` integer — Height of the image in pixels. `null` if not known.
        - `media` string — ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.
        - `mime_type` string — MIME type of the image, e.g. `"image/png"` or `"image/jpeg"`. `null` if not known.
        - `refresh_url` string — Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.
        - `url` string — Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.
        - `width` integer — Width of the image in pixels. `null` if not known.
      - `image_url` string — URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.
      - `image_width` integer — Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.
      - `media_type` string — The media category, e.g. `"video"` or `"audio"`. Present on `media` type only. `null` otherwise.
      - `name` string — Display name of the media item. Present on `media` type only. `null` otherwise.
      - `object` object — The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.
      - `title` string — Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.
      - `type` string, required — The attachment type. One of `"file"`, `"scraped_link"`, `"artifact"`, `"task"`, `"media"`, or `"action"`. Determines which additional fields are present.
      - `url` string — URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.
      - `variants` MediaVariant[] — Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.
        - `content_type` string — MIME type of this variant's file (e.g., `"image/jpeg"`, `"video/mp4"`). `null` if the file is not loaded.
        - `created_at` string, date-time — When this variant was created (ISO 8601).
        - `file` string — ID of the underlying storage file that backs this variant (`fil_...`).
        - `filename` string — Original filename of the uploaded file for this variant. `null` if the file is not loaded.
        - `height` integer — Height of this variant in pixels. `null` if not recorded.
        - `id` string, required — Media variant ID (`mvr_...`).
        - `image_source` ImageSource — Resolved metadata for an image, including its delivery URL, dimensions, and optional references to the underlying storage file or media record.
          - `file` string — ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.
          - `height` integer — Height of the image in pixels. `null` if not known.
          - `media` string — ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.
          - `mime_type` string — MIME type of the image, e.g. `"image/png"` or `"image/jpeg"`. `null` if not known.
          - `refresh_url` string — Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.
          - `url` string — Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.
          - `width` integer — Width of the image in pixels. `null` if not known.
        - `updated_at` string, date-time — When this variant was last updated (ISO 8601).
        - `url` string — Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.
        - `variant_key` string — Identifier for this variant's processing tier. Common values include `"original"` (the unmodified upload) and `"thumbnail"` (a resized preview).
        - `width` integer — Width of this variant in pixels. `null` if not recorded.
      - `version` integer — Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.
      - `width` integer — Width in pixels of the media item. Present on `media` type only. `null` otherwise.
    - `branched_thread` string — ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.
    - `content` string — Text content of the message. `null` for messages that contain only attachments.
    - `created_at` string, date-time — When the message was posted (ISO 8601).
    - `has_replies` boolean — Whether this message has at least one reply. Only present when explicitly requested or computed by the server.
    - `id` string, required — Message ID (`msg_...`).
    - `idempotency_key` string — Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.
    - `legacy_agent` string — Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.
    - `metadata` object — Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.
    - `org` string — ID of the organization that owns this message (`org_...`).
    - `reactions` MessageReaction[] — Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.
      - `payload` object — Type-specific reaction data. For `"emoji_reaction"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `"👍"`).
      - `type` string, required — Reaction type identifier. Currently always `"emoji_reaction"` for emoji-based reactions.
      - `user` string — Public ID of the user who added the reaction (`usr_...`).
    - `rendering_mode` string — Display hint for how the message should be rendered. One of `"reply"`, `"direct"`, or `"inline"`. `null` for user-authored messages, which are always rendered as standard replies.
    - `replies` object[] — Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.
    - `replies_after_cursor` string — Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.
    - `replies_before_cursor` string — Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.
    - `reply_count` integer — Total number of direct replies to this message. Only present when explicitly requested or computed by the server.
    - `reply_to` object — The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.
    - `sandbox` string — ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.
    - `team` string — ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.
    - `thread` string — ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.
    - `user` string — The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.
  - `participant` string[] — Array of participant user IDs (`usr_...`) who are members of this thread.
  - `participants` User[] — Expanded participant user objects for each member of this thread. Populated only when the association is loaded.
    - `alias` string — Short handle or alias for the user. `null` if not set.
    - `app` string — ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.
    - `app_name` string — Display name of the user's app. `null` when the app association was not preloaded by the caller.
    - `email` string — Email address of the user.
    - `id` string, required — User ID (`usr_...`).
    - `is_system_user` boolean — `true` if this account is an internal system user rather than a human. System users are created automatically by the platform.
    - `metadata` object — Arbitrary key-value metadata attached to the user. Defaults to an empty object.
    - `name` string — Full display name of the user. `null` if the user has not set a name.
    - `org` string — ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.
    - `org_name` string — Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.
    - `org_role` string — Role of the user within their organization. One of `"admin"`, `"member"`, or `"viewer"`. `null` when the user is not a member of any organization.
    - `sandbox` string — ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.
    - `sandbox_name` string — Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.
  - `participating_actor` string[] — Composite actor identifiers for all participants currently active in this thread. Present only when actor enrichment is requested.
  - `participating_agents` Agent[] — Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.
    - `acl` Acl — An access-control list payload that supports either full replacement or targeted patch operations on a resource's grants.
      - `add` AclGrant[] — Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.
        - `actions` string[], required — Array of action strings the principal is permitted to perform, e.g. `["read", "write"]`. Must contain at least one entry.
        - `principal` string — The identifier of the principal. A string ID for `"user"`, `"team"`, `"org"`, and `"agent"` types; one of `"admin"`, `"member"`, or `"viewer"` for `"org_role"`; omit entirely when `principal_type` is `"everyone"`.
        - `principal_type` string, required — The kind of principal receiving the grant. One of `"user"`, `"team"`, `"org"`, `"org_role"`, `"agent"`, or `"everyone"`.
      - `grants` AclGrant[] — Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.
        - `actions` string[], required — Array of action strings the principal is permitted to perform, e.g. `["read", "write"]`. Must contain at least one entry.
        - `principal` string — The identifier of the principal. A string ID for `"user"`, `"team"`, `"org"`, and `"agent"` types; one of `"admin"`, `"member"`, or `"viewer"` for `"org_role"`; omit entirely when `principal_type` is `"everyone"`.
        - `principal_type` string, required — The kind of principal receiving the grant. One of `"user"`, `"team"`, `"org"`, `"org_role"`, `"agent"`, or `"everyone"`.
      - `remove` AclRemoveTarget[] — Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.
        - `principal` string — The identifier of the principal to remove. A string ID for `"user"`, `"team"`, `"org"`, and `"agent"` types; one of `"admin"`, `"member"`, or `"viewer"` for `"org_role"`. Omit when `principal_type` is `"everyone"`.
        - `principal_type` string, required — The kind of principal to remove. One of `"user"`, `"team"`, `"org"`, `"org_role"`, `"agent"`, or `"everyone"`.
    - `app` string — ID of the application that owns this agent (`dap_...`).
    - `created_at` string, date-time — When the agent was created (ISO 8601).
    - `default_model` string — Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `"claude-3-7-sonnet-latest"`).
    - `email` string — Email address provisioned for this agent. `null` if email delivery is not configured.
    - `id` string, required — Agent ID (`agi_...`).
    - `identity` string — System-level identity prompt that shapes the agent's persona and behavior.
    - `last_applied_template_config` string — ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.
    - `lookup_key` string — Stable, user-defined identifier for this agent within the application. Unique per app.
    - `metadata` object — Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.
    - `name` string — Human-readable display name for the agent. `null` if not set.
    - `org` string — ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.
    - `org_name` string — Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.
    - `originator` string — Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).
    - `phone_number` string — Phone number provisioned for this agent. `null` if SMS is not configured.
    - `sandbox` string — ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.
    - `source_solution` AgentSourceSolution — Summary of the Solution and AgentTemplate that an agent was last provisioned from. Returned on single-agent responses; `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted.
      - `solution` SolutionSummary, required — A catalog entry for an imported Solution, including its display metadata, bundled templates, owner scopes, and any available upgrade information.
        - `category_keys` string[] — Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.
        - `created_at` string, date-time — When the Solution config was first imported (ISO 8601).
        - `description` string — Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.
        - `id` string, required — Solution config ID (`cfg_...`).
        - `kind` string, required — Resource type. Always `"Solution"`.
        - `latest_solution` string — When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.
        - `latest_version` string — When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.
        - `lookup_key` string — The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.
        - `metadata` object — Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.
        - `name` string — Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.
        - `org` string — Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.
        - `org_logo` ImageSource — Resolved metadata for an image, including its delivery URL, dimensions, and optional references to the underlying storage file or media record.
          - `file` string — ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.
          - `height` integer — Height of the image in pixels. `null` if not known.
          - `media` string — ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.
          - `mime_type` string — MIME type of the image, e.g. `"image/png"` or `"image/jpeg"`. `null` if not known.
          - `refresh_url` string — Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.
          - `url` string — Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.
          - `width` integer — Width of the image in pixels. `null` if not known.
        - `org_name` string — Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.
        - `org_slug` string — Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.
        - `owners` string[], required — Owner scopes this Solution appears under. Members: `"system"` (app-level system scope) and/or `"org"` (viewer's org scope).
        - `readme_url` string — Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.
        - `solution_id` string — Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.
        - `solution_version` string — Semver string declared in the Solution body (e.g. `"1.2.0"`). `null` when the body does not declare a version.
        - `tag_keys` string[] — Freeform tag keys declared in the Solution body. An empty array when the body declares none.
        - `template_kind` string — Wrapped template kind — `"AgentTemplate"`, `"AutomationTemplate"`, `"AgentRoutineTemplate"`, `"AgentToolTemplate"`, `"AgentComputerTemplate"`, or `"SolutionTemplateRef"` for ref-mode bundles.
        - `templates` SolutionTemplateSummary[], required — Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.
          - `description` string — Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.
          - `display_name` string — Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.
          - `id` string — Template config ID (`cfg_...`). `null` for inline-only templates.
          - `kind` string, required — Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.
          - `lookup_key` string — Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.
          - `name` string — Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.
          - `readme_url` string — Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.
          - `virtual_path` string — Stable virtual path assigned to the template config. `null` when no virtual path was set.
        - `updated_at` string, date-time — When the Solution config was last modified (ISO 8601).
        - `upgrade_available` boolean, required — `true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.
        - `virtual_path` string — The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.
      - `template` UpgradeTemplateSummary, required — Compact summary of an AgentTemplate config referenced by an agent upgrade or source-solution response.
        - `created_at` string, date-time — When this template config was created (ISO 8601).
        - `description` string — Description of the template from the config body. `null` if the current version has no `description` field.
        - `display_name` string — Human-readable display name from the config body. `null` if the current version has no `display_name` field.
        - `id` string, required — Template config ID (`cfg_...`).
        - `kind` string, required — Config kind identifier for this template (e.g. `"agent_tool_template"`).
        - `lookup_key` string — Stable lookup key assigned to this template config. `null` if no lookup key is set.
        - `name` string — Template name as stored in the config body. `null` if the current version has no `name` field.
        - `updated_at` string, date-time — When this template config was last modified (ISO 8601).
        - `virtual_path` string — Virtual filesystem path for this template config. `null` if not set.
    - `team` string — ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.
    - `updated_at` string, date-time — When the agent was last modified (ISO 8601).
    - `user` string — ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.
  - `role` string — The authenticated user's membership role in this thread, e.g. `"owner"`, `"member"`, or `"viewer"`. `null` if the user is not a member.
  - `sandbox` string — ID of the developer sandbox this thread is scoped to (`sbx_...`). `null` for production threads.
  - `settings` ThreadSettings — Configuration settings for a thread that control AI agent behavior and other thread-level preferences.
    - `agent_enabled` boolean — Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.
  - `slug` string — URL-safe slug for the thread, used in human-readable permalinks. `null` if not assigned.
  - `sub_threads` object[] — Threads that are nested under this thread as replies to a parent message. Present only when sub-thread enrichment is requested.
  - `team` string — ID of the team that owns this thread (`team_...`). `null` for user-owned or agent-owned threads.
  - `title` string — Human-readable name of the thread. `null` if no title has been set.
  - `ttl` integer — Time-to-live in seconds after which the thread may be automatically cleaned up. `null` if the thread does not expire.
  - `unread_count` integer — Number of messages in this thread that the authenticated user has not yet read. Present only when read-state enrichment is requested.
  - `updated_at` string, date-time — When the thread was last modified (ISO 8601).
  - `user` string — ID of the user who owns this thread (`usr_...`). `null` for team-owned or agent-owned threads.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Thread not found

---

[API](https://skmtc.net/archastro/apis/archastro-platform-api.md) · [All operations](https://skmtc.net/archastro/apis/archastro-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/archastro/archastro-platform-api/versions/a8772b442f86/schema)
