Перейти к основному содержанию
POST
Anthropic Messages API
Совместим с Anthropic Messages API. Если ваш код уже работает через anthropic.Anthropic или официальный TypeScript SDK, поменяйте base_url и api_key — больше ничего трогать не нужно.
Anthropic SDK передаёт ключ в заголовке X-Api-Key. Этот API принимает X-Api-Key наравне с Authorization: Bearer — менять код авторизации в SDK не нужно.

Минимальный запрос

Идентификатор модели нужно взять из GET /api/v1/models и подставить как есть. Если модель неизвестна, придёт 404 not_found_error. Идентификатор в примерах ниже конкретный, чтобы их можно было скопировать; в рабочем коде получайте его из каталога — состав моделей меняется.

Поля запроса

Обязательные

Каждый элемент messages[] — объект с role (user или assistant) и content. content принимает три формы: Принимаемые типы блоков на входе: text, image, document, tool_use, tool_result, thinking, redacted_thinking, search_result, а также блоки с результатами серверных инструментов.
Роль system в messages[] не используется — передавайте системную инструкцию в отдельное поле system. Роли, отличные от user и assistant, приведут к ошибке.

Генерация

Инструменты

tool_choice — объект {type: auto | any | tool | none}, где any и tool дополнительно требуют name. Есть поле disable_parallel_tool_use: true запрещает несколько вызовов за один шаг. Вызов приходит в content как блок tool_use, а stop_reason равен tool_use. Отправьте результат обратно блоком tool_result с тем же tool_use_id:

Рассуждения

budget_tokens переводится в уровень глубины рассуждения: чем больше бюджет, тем выше уровень. display: "omitted" убирает краткий пересказ рассуждений из ответа, само рассуждение при этом остаётся. Текст рассуждений приходит блоком thinking в content, а его объём — в usage.output_tokens_details.thinking_tokens.

Ответ

stop_reason — одно из end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal, model_context_window_exceeded, compaction либо null, если генерация ещё не закончилась.
Счётчики токенов здесь считаются не так, как в OpenAI, и их нельзя складывать напрямую. input_tokens не включает кэш-токены — их нужно прибавить отдельно. thinking_tokens — подмножество output_tokens, их не прибавляют. Итоговый вход: input_tokens + cache_creation_input_tokens + cache_read_input_tokens. Итоговый выход — это output_tokens.

Потоковая передача

При stream: true приходит поток SSE. Каждый кадр — безымянное событие data:; отдельного поля event: сервер не пишет, поэтому клиенты, разбирающие поток по event:, работать не будут. Тип события лежит в поле type самого объекта.

События

Типы дельт внутри content_block_delta: Блоки собираются по index: пока не пришёл content_block_stop с этим index, блок не закончен.
Деньги списываются на терминальном кадре message_delta — именно там приходит полный usage. Если поток оборвался раньше, этого кадра не будет, а значит, не будет и списания по этому запросу: сверяйтесь с балансом через GET /api/v1/balance.
После последнего события сервер дописывает кадр data: [DONE]. Его нет в спецификации Anthropic Messages API: строгий клиент попытается распарсить [DONE] как JSON и упадёт. Обработайте эту строку как конец потока и завершайте чтение.
Обрабатывайте неизвестные типы событий без ошибки: они могут появляться без изменения основного контракта.

Ошибки

Ошибки возвращаются в формате Anthropic, а не OpenAI:
Типы error.type: invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error.
Недостаток денег здесь отдаётся как 400, а не как 402. Это осознанное отличие от Запрос чату: код ответа следует за контрактом Anthropic, чтобы SDK не выбрасывали для него исключение другого типа. Проверяйте баланс заранее через GET /api/v1/balance.
Полная таблица кодов — на странице Ошибки.

Что дальше

Запрос чату

Тот же набор моделей в формате Chat Completions

Responses

Более современный интерфейс с элементами вывода

Каталог моделей

Идентификаторы и цены

Ошибки

Полная таблица кодов

Авторизации

Authorization
string
header
обязательно

API-ключ в формате sk-.... Альтернативно — заголовок X-Api-Key: sk-... (совместимо с Anthropic SDK).

Тело

application/json
model
string
обязательно
Пример:

"gpt-4o"

messages
object[]
обязательно
max_tokens
integer

Обязательный параметр в Anthropic API.

system
stream
boolean
по умолчанию:false
temperature
number
top_p
number
top_k
integer
stop_sequences
string[]
tools
object[]
tool_choice
object
thinking
object
metadata
object

Ответ

Успешный ответ. При stream: true — поток SSE с событиями Anthropic (message_start, content_block_delta, message_delta, message_stop), завершающийся кадром data: [DONE].

id
string
обязательно
type
string
обязательно
Пример:

"message"

role
string
обязательно
Пример:

"assistant"

model
string
обязательно
content
object[]
обязательно
stop_reason
enum<string> | null
Доступные опции:
end_turn,
max_tokens,
stop_sequence,
tool_use,
pause_turn,
refusal,
null
stop_sequence
string | null
usage
object

Внимание: input_tokens не включает кеш-токены — их нужно складывать отдельно. thinking_tokens входят в output_tokens и не прибавляются к нему.