---
title: "Send a message inside a webchat side thread"
method: POST
path: "/api/v1/chat/threads/{thread_id}/messages"
tags: ["Chat"]
---

# Send a message inside a webchat side thread

`POST /api/v1/chat/threads/{thread_id}/messages`

**Required scope:** `chat`

## Path parameters

- `thread_id` string, required

## Request body

- ChatThreadMessageRequest
  - `message` union, required
    - string
    - MessagePart[]
      - `type` 'text' | 'plain' | 'image' | 'file' | 'audio' | 'record' | 'video' | 'reply', required
      - `text` string
      - `attachment_id` string
      - `url` string
      - `filename` string
      - `stored_filename` string
      - `mime_type` string
  - `selected_provider` string
  - `selected_model` string
  - `enable_streaming` boolean — Deprecated compatibility field. It is used only when flags.enable_streaming is absent; otherwise flags.enable_streaming takes priority.
  - `flags` ChatFlags — Per-request ChatUI feature flags. A value here takes priority over its legacy top-level field, followed by the documented default.
    - `enable_inline_genui` boolean — Inject the inline HTML GenUI system prompt for this request.
    - `enable_default_system_prompt` boolean — Allow the ChatUI default system prompt when no persona overrides it.
    - `enable_streaming` boolean — Enable streaming model output for this request. This value takes priority over the legacy top-level enable_streaming field.

## Response `200`

Server-sent chat stream or an error envelope

---

[API](https://skmtc.net/astrbotdevs/apis/astrbot-openapi-v1.md) · [All operations](https://skmtc.net/astrbotdevs/apis/astrbot-openapi-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/astrbotdevs/astrbot-openapi-v1/revisions/4463c5ffdb9c/schema)
