---
title: "Post Message"
method: POST
path: "/api/v1/conversations/{conversation_id}/messages"
tags: ["chat"]
---

# Post Message

`POST /api/v1/conversations/{conversation_id}/messages`

## Path parameters

- `conversation_id` string, uuid, required

## Query parameters

- `rev` string, uuid, nullable

## Request body

- PostMessageRequest — Body for POST /api/v1/conversations/{id}/messages. Response is text/event-stream, not JSON, so no response model.
  - `content` string, required
  - `context` MessageContext
    - `active_page_id` string, uuid, nullable
    - `items` union[]
      - union
        - AnnotationContextItem
          - `kind` 'annotation'
          - `measurement_id` string, uuid, required
        - RegionContextItem — Region attached from the canvas. Coordinates are PDF user-space — same units and origin as pages.width/height and text-element bboxes.
          - `kind` 'region'
          - `page_id` string, uuid, required
          - `x` number, required
          - `y` number, required
          - `width` number, required
          - `height` number, required
    - `ui_state` UiState — Client canvas snapshot. Transport only: never rendered into prompts and stripped from the persisted ContextBlock (see rudus_api/ai/chat.py); read solely by the get_ui_state tool.
      - `active_takeoff_tool` string, nullable
      - `active_markup_tool` string, nullable
      - `selected_measurement_ids` string[]
      - `selected_annotation_ids` string[]
      - `total_selected` integer, nullable
  - `client_artifacts` OverlayChangeSetArtifact[]
    - `kind` 'overlay_change_set'
    - `version` 2
    - `body` OverlayChangeSet, required
      - `from_revision_id` string, uuid, required
      - `to_revision_id` string, uuid, required
      - `fingerprint` string, required
      - `status` 'running' | 'ready' | 'partial', required
      - `canceled` boolean
      - `truncated` boolean
      - `sheets` OverlaySheetStatus[], required
        - `page_id` string, uuid, required — Older/base page version (alias of from_page_id).
        - `page_identity_id` string, uuid, required
        - `from_page_id` string, uuid, required
        - `to_page_id` string, uuid, required
        - `status` 'pending' | 'diffed' | 'summarized' | 'misaligned' | 'failed', required
        - `change_count` integer, required
      - `changes` OverlayChange[], required
        - `change_id` string, required
        - `page_id` string, uuid, required — Older/base page version; geometry is in its PDF space.
        - `x` number, required
        - `y` number, required
        - `width` number, required
        - `height` number, required
        - `title` string, nullable
        - `summary` string, nullable
        - `significance` 'substantive' | 'administrative' | 'cosmetic', nullable
        - `confidence` number, nullable
        - `cloud_marked` boolean
        - `instances` OverlayChangeInstance[], nullable
          - `page_id` string, uuid, required — Older/base page version; geometry is in its PDF space.
          - `x` number, required
          - `y` number, required
          - `width` number, required
          - `height` number, required
        - `dead_ink` integer
        - `new_ink` integer

## Response `200`

Successful Response

- unknown

## Other responses

- `4XX` — Client Error
- `5XX` — Server Error

---

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