---
title: "Send Message"
method: POST
path: "/assistant/conversations/{conversation_id}/messages"
tags: ["assistant"]
---

# Send Message

`POST /assistant/conversations/{conversation_id}/messages`

Send a message to the conversation and stream the assistant's response as SSE events.

404s if the conversation does not exist or is not owned by the caller. 409s if
`message_id` was already submitted (the field is the client-side idempotency key).

## Path parameters

- `conversation_id` string, uuid4, required

## Request body

- SendMessageRequest — Request body for sending a message to the assistant.
  - `message_id` string, uuid4, required — Client-generated UUID for this user message. Echoed back in the SSE start event as message_id.
  - `message` string, required — The user's message text.
  - `parent_message_id` string, uuid4, nullable — ID of the message this branches from. Null for the first message in a conversation.
  - `model` string, nullable — LLM model to use. Overrides the conversation default for this turn.
  - `context` union[] — Active surfaces scoping this turn: project, logstream, experiment, trace, span, and current page.
    - union
      - PageContext — Current application page for the assistant turn.
        - `type` 'page', required
        - `id` string, required — Page identifier.
        - `path` string, required — Current route path.
        - `view` string, nullable — Optional page view or sub-view identifier.
        - `metric_form_state` MetricFormState — Editable custom LLM metric fields supplied by the Metrics form.
          - `schema_version` 1
          - `revision` string, required — Opaque revision of the current form state.
          - `mode` 'create' | 'edit', required
          - `metric_type` 'llm', required
          - `metric_id` string, uuid4, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `target_node_type` 'session' | 'trace' | 'workflow' | 'agent' | 'llm' | 'retriever' | 'tool', nullable
          - `user_prompt` string, nullable
          - `model` string, nullable
          - `output_type` 'boolean' | 'categorical' | 'count' | 'discrete' | 'percentage' | 'multilabel', required
          - `metric_color_picker_config` MetricColorPickerConfig — Metric color thresholds in the existing Metrics form/API shape.
            - `type` 'boolean' | 'categorical' | 'multi_label' | 'numeric', required
            - `constraints` union[], required
              - …
          - `cot_enabled` boolean, required
      - ProjectContext — Active project scope for the assistant turn.
        - `type` 'project', required
        - `id` string, uuid4, required — Project ID.
      - LogstreamContext — Active logstream scope for the assistant turn.
        - `type` 'logstream', required
        - `id` string, uuid4, required — Logstream (run) ID.
        - `project_id` string, uuid4, required — Project the logstream belongs to.
        - `start_time` string, date-time, nullable — Start of the active time window (UTC).
        - `end_time` string, date-time, nullable — End of the active time window (UTC).
      - ExperimentContext — Active experiment scope for the assistant turn.
        - `type` 'experiment', required
        - `id` string, uuid4, required — Experiment ID.
        - `project_id` string, uuid4, required — Project the experiment belongs to.
        - `start_time` string, date-time, nullable — Start of the active time window (UTC).
        - `end_time` string, date-time, nullable — End of the active time window (UTC).
      - TraceContext — A specific trace the user is viewing.
        - `type` 'trace', required
        - `id` string, uuid4, required — Trace ID.
        - `project_id` string, uuid4, required — Project the trace belongs to.
      - SpanContext — A specific span within a trace the user is viewing.
        - `type` 'span', required
        - `id` string, uuid4, required — Span ID.
        - `trace_id` string, uuid4, required — Trace the span belongs to.
        - `project_id` string, uuid4, required — Project the trace belongs to.

## Response `200`

Successful Response

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/galileo/apis/galileo-api-server.md) · [All operations](https://skmtc.net/galileo/apis/galileo-api-server/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/galileo/galileo-api-server/revisions/933e8c8e6366/schema)
