---
title: "Post a message to an existing chat and stream the reply"
method: POST
path: "/v1/chats/{chatId}"
tags: ["Chats"]
---

# Post a message to an existing chat and stream the reply

`POST /v1/chats/{chatId}`

## Path parameters

- `chatId` string, required

## Request body

- SendChatMessageRequest
  - `message` string, required
  - `model` 'auto' | 'anthropic/claude-opus-5' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-sonnet-5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-haiku-4.5' | 'openai/gpt-5.4' | 'openai/gpt-5.5'
  - `enableThinking` boolean
  - `thinkingLevel` 'off' | 'low' | 'medium' | 'high'
  - `timezone` string
  - `context` union[]
    - union
      - object
        - `type` 'github-repo', required
        - `integrationId` string, required
        - `owner` string, required
        - `repo` string, required
      - object
        - `type` 'linear-team', required
        - `integrationId` string, required
        - `teamName` string
      - object
        - `type` 'mcp-server', required
        - `integrationId` string, required
        - `name` string, required
  - `externalChannelId` ExternalChannelId, nullable
    - `source` 'discord' | 'slack' | 'dashboard', required
    - `id` string

## Response `200`

Streaming UI message stream (newline-delimited JSON chunks). Read the `X-Chat-Id` response header for the chat id, or take it from the `start` chunk's `messageMetadata.chatId`.

## Other responses

- `400` — Invalid request body
- `401` — Missing or invalid API key
- `403` — Forbidden, or usage limit reached
- `404` — Chat not found
- `429` — Rate limit exceeded. This endpoint allows 30 requests per 1 minute per organization.
- `500` — Failed to process chat request
- `503` — Authentication service unavailable

## Changes

- **2026-09-02** `fd2fc44c9208` — 3 breaking, 2 warning
  - added `#/components/schemas/ExternalChannelId, subschema #2` to the `externalChannelId` request property `allOf` list
  - the request property `externalChannelId` became not nullable
  - the `externalChannelId` request property type/format changed from `object, null`/`` to ``/``
  - removed the request property `externalChannelId/id`
  - …1 more
- **2026-07-26** `0df1eb9cc560` — 1 info
  - added `subschema #3` to the `context/items/` request property `oneOf` list
- **2026-07-26** `fe8b482b103d` — 1 info
  - added the new `anthropic/claude-opus-5` enum value to the request property `model`
- **2026-07-21** `a43b57573f72` — 1 info
  - added the non-success response with the status `429`

[Change history](https://skmtc.dev/usenotra/apis/notra-api/changes/v1/chats/:chatId/post.md)

---

[API](https://skmtc.dev/usenotra/apis/notra-api.md) · [All operations](https://skmtc.dev/usenotra/apis/notra-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/usenotra/notra-api/revisions/e68c55c482b6/schema)
