---
title: "Update a thread"
method: PUT
path: "/api/v1/threads/{thread}"
---

# Update a thread

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

Updates one or more mutable properties of the specified thread and returns
the full thread object with the applied changes. Only the fields you provide
are modified; omitted fields retain their current values.

If `profile_picture` is supplied, the image is uploaded before the other
fields are saved, after all ordinary thread fields have passed validation.
Supplying invalid base64 picture data returns 422 and no other fields are
updated.

Visibility can only widen: `private` may become `restricted` or `team`, and
`restricted` may become `team`. The authenticated viewer must have
permission to modify the thread.

## Path parameters

- `thread` string, required

## Request body

- object
  - `description` string — Optional longer text describing the thread's purpose. Replaces the existing description when provided.
  - `metadata` object — Arbitrary key-value metadata to store on the thread. Merged with or replaces existing metadata.
  - `muted` boolean — When `true`, suppresses notifications for new messages in this thread for the authenticated user.
  - `profile_picture` object — New profile picture for the thread. Provide all three inner fields to replace the existing image.
    - `data` string — Base64-encoded image payload. Must be a valid base64 string.
    - `filename` string — Original filename of the image, e.g. `"avatar.png"`. Used for storage metadata.
    - `mime_type` string — MIME type of the image, e.g. `"image/jpeg"` or `"image/png"`.
  - `title` string — Human-readable display name for the thread. Replaces the existing title when provided.
  - `visibility` 'private' | 'restricted' | 'team' — Widen a team-owned thread: `private` may become `restricted` or `team`, and `restricted` may become `team`. Visibility cannot be narrowed.

## Response `200`

The thread object after the update has been applied.

- 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

- `400` — Invalid parameters
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Thread not found
- `422` — Validation failed

---

[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)
