---
title: "Create message (Anthropic)"
method: POST
path: "/messages"
tags: ["Anthropic"]
---

# Create message (Anthropic)

`POST /messages`

Sends a structured list of input messages and generates the next message in the conversation. This is the Anthropic Messages API.
Reasoning behavior mirrors the Chat Completions API: `corti-s1` and `corti-s1-mini` generate chain-of-thought reasoning, while `-instant` variants do not. However, the Anthropic Messages API response does not expose reasoning as a separate field — content is returned as text blocks only.

## Headers

- `anthropic-version` string, required

## Request body

- AnthropicMessageRequest
  - `model` 'corti-s1' | 'corti-s1-instant' | 'corti-s1-mini' | 'corti-s1-mini-instant', required
  - `max_tokens` integer, required — Maximum tokens to generate. Required by the Anthropic API.
  - `messages` object[], required — Conversation messages. Supported roles: `user`, `assistant`.
    - `role` 'user' | 'assistant', required
    - `content` string, required — Message content as plain text.
  - `system` string, nullable — System prompt. Equivalent to a system message in chat completions.
  - `stream` boolean — If true, returns SSE with typed events: `message_start`, `content_block_start`, `content_block_delta`, `content_block_stop`, `message_delta`, `message_stop`.
  - `temperature` number, float
  - `top_p` number, float

## Response `200`

Successful response. For non-streaming requests, returns a complete message object. For streaming requests, returns Server-Sent Events (SSE) with typed events: `message_start`, `content_block_start`, `content_block_delta`, `content_block_stop`, `message_delta`, `message_stop`.

- AnthropicMessageResponse
  - `id` string — Unique message ID (e.g. `chatcmpl-3e537413-...`).
  - `type` 'message'
  - `role` 'assistant'
  - `content` object[] — Array of content blocks.
    - `type` 'text'
    - `text` string — The model's text response.
  - `model` string — The model name used for this response.
  - `stop_reason` 'end_turn' — Why generation stopped.
  - `usage` object
    - `input_tokens` integer
    - `output_tokens` integer
    - `cache_creation_input_tokens` integer
    - `cache_read_input_tokens` integer

## Other responses

- `401` — Authentication failed
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/corti/apis/admin-api.md) · [All operations](https://skmtc.net/corti/apis/admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/corti/admin-api/revisions/5d1895a1b3fc/schema)
