Перейти к навигации

Claude Messages

Вызывайте Claude Fable 5.1, Opus 5.5, Sonnet 5.5 и Haiku 5.5 через единый метод Anthropic Messages с ключом BeatAPI.

  • Все актуальные модели Claude доступны через POST /v1/messages. Для переключения меняйте model.
  • Текст и изображения на входе, текст на выходе, потоковая передача, вызовы инструментов, расширенные рассуждения и кэширование промптов.
  • Совместимо с Anthropic SDK: задайте базовый URL https://direct.beatapi.io (без /v1) и используйте ключ BeatAPI.
  • Модели Claude доступны только через Anthropic Messages. Вызов /v1/responses возвращает 400.

Для текстовых запросов используйте базовый URL https://direct.beatapi.io. Этот адрес не ограничен 100-секундным тайм-аутом Cloudflare, который может прервать долгий запрос без потоковой передачи. Если ваша сеть не может подключиться к нему, используйте https://api.beatapi.io. Ключи, модели и цены одинаковы. API изображений и видео используют только https://api.beatapi.io.

POST/v1/messagesПопробовать

Открывает эндпоинт в API Explorer. Если ввести ключ BeatAPI и отправить запрос, будет выполнен реальный вызов с оплатой из вашего баланса.

Модели

Передайте один из этих ID в model. Каждый ID обозначает отдельную модель; не считайте их псевдонимами друг друга.

ID моделиКонтекст (токены)Максимальный вывод (токены)НазначениеВвод, USD за миллион токеновВывод, USD за миллион токеновПримечания
claude-opus-5-51 000 000128 000Claude Opus для длительного программирования с агентом и работы со знаниями, дешевле Opus 5$2.00$10.00Для длительных задач программирования с агентом и работы со знаниями.
claude-sonnet-5-51 000 000128 000Claude Sonnet 5.5 для программирования, рассуждений и профессиональных задач с контекстом на 1M токенов$1.00$5.00Для повседневного программирования, рассуждений и профессиональных задач.
claude-haiku-5-51 000 000128 000Самая быстрая модель Claude для массовых задач с низкой задержкой: классификации, извлечения данных и маршрутизации$0.05$0.25Самая быстрая модель Claude для массовых задач, например классификации, извлечения данных и маршрутизации.
claude-fable-5-11 000 000128 000Модель Claude для сложных рассуждений и длительных задач агентов$5.00$25.00Для длинных текстов и задач, где особенно важны авторский стиль и структура.
  • Указаны базовые цены со скидкой. Не включены тарифы для длинного контекста, кэшированного ввода и записи в кэш. См. страницу цен.
  • — означает, что каталог не публикует это значение.

Старые ID этого семейства остаются доступны. См. старые модели.

Быстрый старт

Установите пакет anthropic на сервере и сохраните ключ в BEATAPI_API_KEY. Не помещайте ключ в код браузерного приложения. Ниже показаны примеры запросов, а не записанные ответы модели.

Прочитайте ответ в блоках text массива content, затем проверьте stop_reason и usage. Сам по себе HTTP 200 не означает, что ответ решает вашу задачу: проверяйте результат в приложении. Текстовые запросы возвращают ответ напрямую; опрашивать /v1/tasks для них не нужно.

curl --request POST \
--url https://direct.beatapi.io/v1/messages \
--header "x-api-key: $BEATAPI_API_KEY" \
--header 'anthropic-version: 2023-06-01' \
--header 'Content-Type: application/json' \
--data '{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Design a resilient webhook retry strategy for a payments API."
}
]
}'

Эндпоинт и аутентификация

POST https://direct.beatapi.io/v1/messages

x-api-key string Обязательно

Используйте ключ BeatAPI. Также поддерживается Authorization: Bearer <BEATAPI_API_KEY>.

Передавайте заголовок anthropic-version, например anthropic-version: 2023-06-01. Ключ можно передать в x-api-key или Authorization: Bearer <key>: работают оба варианта, поэтому в существующем клиенте Anthropic достаточно изменить базовый URL.

Модели Claude доступны только через Anthropic Messages. Их вызов через /v1/responses возвращает 400.

Параметры запроса

Поддерживаются стандартные поля Anthropic Messages. Совместимость формата запроса не означает поддержку всех бета-функций и серверных инструментов. Проверьте возможности, от которых зависит ваше приложение.

model string Обязательно

Точный ID модели.

Допустимые значения: claude-fable-5-1, claude-opus-5-5, claude-sonnet-5-5, claude-haiku-5-5

  • Прежние рабочие ID (claude-opus-5, claude-sonnet-5, claude-haiku-4-5-20251001) перечислены в разделе Старые модели.
  • Вызовите GET /v1/models со своим ключом, чтобы проверить, какие модели ему доступны.

max_tokens integer Обязательно

Максимальное число генерируемых токенов, включая рассуждения.

  • Всегда передавайте это поле. Если его нет или оно равно 0, применяется лимит по умолчанию, который может оказаться ниже ожидаемого.
  • Максимально допустимое значение — 1 073 741 823; превышение возвращает 400 bad_request. При этом не превышайте максимальный объём вывода модели из таблицы выше.
  • max_tokens также используется для оценки необходимого баланса. Слишком большое значение может привести к 402 insufficient_credits, даже если фактический ответ был бы коротким. Указывайте столько токенов, сколько требуется задаче.

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

История диалога, от самого раннего сообщения к последнему. У каждого сообщения есть role (user или assistant) и content. В content передаётся строка либо массив блоков содержимого.

  • Основные типы блоков: text, image (источник base64 или URL), tool_use (в сообщении assistant) и tool_result (в сообщении user).
  • Пустой или отсутствующий массив messages приводит к 400 bad_request.

Пример

[
{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this image?" },
{ "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": "<base64>" } }
]
}
]

system string | object[] Необязательно

Системный промпт: строка либо массив блоков text. Добавьте cache_control к блоку, чтобы кэшировать длинный неизменяемый префикс.

Пример

[
{
"type": "text",
"text": "<long, stable instructions>",
"cache_control": { "type": "ephemeral" }
}
]

stream boolean НеобязательноПо умолчанию: false

Передавать ответ потоком событий SSE. См. раздел о потоковой передаче ниже.

По умолчанию: false

stop_sequences string[] Необязательно

Строки, при обнаружении которых генерация прекращается. В ответе будет stop_reason: "stop_sequence".

tools object[] Необязательно

Инструменты, которые может вызвать модель. У каждого есть name, description и input_schema (JSON Schema). При вызове инструмента модель возвращает stop_reason: "tool_use"; выполните инструмент и передайте результат в следующем блоке tool_result.

Пример

[
{
"name": "get_weather",
"description": "Get the current weather for a city.",
"input_schema": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
]

tool_choice object Необязательно

Нужно ли модели использовать tools и каким образом.

Допустимые значения: {"type":"auto"}, {"type":"any"}, {"type":"tool","name":"..."}, {"type":"none"}

  • auto оставляет выбор модели, any требует вызвать любой инструмент, tool — инструмент по имени, none запрещает инструменты.

Пример

{ "type": "auto" }
{ "type": "tool", "name": "get_weather" }

thinking object Необязательно

Расширенные рассуждения. Поле type включает или отключает их. Токены рассуждений входят в лимит max_tokens и оплачиваются как выходные.

Допустимые значения: adaptive, enabled, disabled

  • thinking.type принимает одно из значений выше. При enabled задайте thinking.budget_tokens: целое число не меньше 1 024 и меньше max_tokens.
  • thinking.display принимает summarized или omitted. Новые модели могут не возвращать текст рассуждений, если не запросить summarized.
  • Глубина адаптивных рассуждений задаётся через output_config.effort.

Зависит от модели

  • claude-fable-5-1: Используйте {"type":"adaptive"} и задавайте глубину через output_config.effort; budget_tokens отклоняется.
  • claude-opus-5-5: Используйте {"type":"adaptive"} и задавайте глубину через output_config.effort; budget_tokens отклоняется.
  • claude-sonnet-5-5: Используйте {"type":"adaptive"} и задавайте глубину через output_config.effort; budget_tokens отклоняется.

Пример

{
"thinking": { "type": "adaptive" },
"output_config": { "effort": "high" }
}

output_config.effort string Необязательно

Интенсивность рассуждений модели. Начните с high, затем на своих задачах сравните уровень выше и ниже.

Допустимые значения: low, medium, high, xhigh, max

cache_control object Необязательно

Кэширование промпта. Добавьте к блоку system, messages или tools, чтобы кэшировать всё до этого блока включительно, либо на верхний уровень запроса. Значение ttl: 5m (по умолчанию) или 1h.

Допустимые значения: {"type":"ephemeral"}

  • Чтение кэша, запись на 5 минут и запись на 1 час оплачиваются отдельно. Кэшированный префикс оплачивается как чтение кэша, а не как новый вход.
  • Количество токенов при чтении и создании кэша указано в usage.cache_read_input_tokens и usage.cache_creation_input_tokens.

Пример

{ "type": "ephemeral" }
{ "type": "ephemeral", "ttl": "1h" }

Цикл вызова инструментов

Когда stop_reason равен tool_use, добавьте сообщение assistant в историю без изменений, выполните инструмент и передайте результат в блоке tool_result следующего сообщения user. Повторно передайте тот же список tools.

{
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "What is the weather in Paris?" },
{
"role": "assistant",
"content": [
{ "type": "tool_use", "id": "toolu_example", "name": "get_weather", "input": { "city": "Paris" } }
]
},
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_example", "content": "18 C, light rain" }
]
}
]
}

Ответ

Без потоковой передачи запрос возвращает один JSON-объект. Ниже приведён сокращённый пример.

{
"id": "msg_example",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-5-5",
"content": [
{
"type": "text",
"text": "Retry with exponential backoff and jitter, and make every handler idempotent."
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 19,
"output_tokens": 16
}
}

Поля ответа

ПолеТипОписание
idstringID сообщения. Сохраняйте его вместе с ID запроса для обращений в поддержку и сверки расходов.
modelstringМодель, сформировавшая ответ.
content[].typestringtext, tool_use либо thinking, если возвращается текст рассуждений.
content[].textstringТекст ответа из блока text.
stop_reasonstringend_turn — ответ завершён; max_tokens — достигнут лимит max_tokens; stop_sequence — сработала останавливающая последовательность; tool_use — модель вызвала инструмент.
usage.input_tokensintegerВходные токены, полученные не из кэша.
usage.output_tokensintegerВыходные токены, включая рассуждения.
usage.cache_read_input_tokensintegerВходные токены, прочитанные из кэша промптов.
usage.cache_creation_input_tokensintegerВходные токены, записанные в кэш промптов.

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

Установите "stream": true. Ответ поступает потоком серверных событий Anthropic, совместимым с Anthropic SDK.

  • События потока: message_start, ping, content_block_start, content_block_delta, content_block_stop, message_delta и message_stop.
  • Текст поступает в text_delta, входные данные инструмента — в input_json_delta (сначала объедините фрагменты, затем разберите JSON), а текст рассуждений — в thinking_delta.
  • stop_reason и окончательное число выходных токенов поступают в message_delta.
  • Тип ответа — text/event-stream; без потоковой передачи — application/json. Ошибка до вызова модели возвращается обычным JSON-ответом с HTTP-кодом, а не событием потока.
  • Явно задайте тайм-ауты и предусмотрите безопасное восстановление соединения при потоковой передаче.
event: message_start
data: {"type":"message_start","message":{"id":"msg_example","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"usage":{"input_tokens":19,"output_tokens":1}}}
event: ping
data: {"type":"ping"}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Retry"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" with backoff"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":16}}
event: message_stop
data: {"type":"message_stop"}

Устранение ошибок

Ошибка или симптомПричинаРешение
400: отсутствует messages или model, либо слишком велик max_tokensМассив messages пустой или отсутствует, model пустой либо max_tokens превышает 1 073 741 823.Передайте оба поля и задайте max_tokens в допустимых пределах.
400 при вызове /v1/responsesМодели Claude не обслуживаются через OpenAI Responses.Используйте POST /v1/messages.
400 с упоминанием настройки thinkingМодель не принимает эту настройку, например budget_tokens у модели с адаптивными рассуждениями.Используйте настройку, указанную для модели в разделе thinking выше.
402 insufficient_creditsБаланс меньше оценочной стоимости запроса, часто из-за слишком большого max_tokens.Пополните баланс или уменьшите max_tokens.
403 forbiddenНа аккаунте только регистрационный бонус, а модель не входит в разрешённый список, либо она недоступна группе ключа.Пополните баланс, выберите бесплатную модель или используйте ключ с доступом к нужной модели.
404 not_foundНеизвестный ID модели либо модель недоступна этому ключу.Получите список доступных моделей через GET /v1/models.
429 rate_limit_exceededДостигнут лимит запросов аккаунта или бесплатной модели.Подождите время, указанное в Retry-After, затем повторите запрос.
200 с stop_reason: "max_tokens" и коротким или пустым ответомЛимит max_tokens исчерпан до формирования ответа, часто из-за рассуждений.Увеличьте max_tokens или уменьшите output_config.effort.

Обзор HTTP-ошибок

Ошибки до вызова модели используют поля BeatAPI error.code, error.message, retryable и request_id. Остальные сохраняют формат Anthropic {"type": "error", "error": {"type", "message"}}. Код находится в error.type, ID запроса — в конце message. См. ошибки.

HTTP-статусКодыЧто делать
400bad_request, content_policy_violationИсправьте запрос или ввод. Не отправляйте его повторно без изменений.
401missing_api_key, invalid_api_keyПроверьте ключ. Не повторяйте запрос без исправления.
402insufficient_creditsПополните баланс или увеличьте лимит ключа. Слишком высокий max_tokens может вызвать эту ошибку.
403forbiddenПроверьте группу ключа, список разрешённых IP и доступность модели за бесплатные кредиты.
404not_foundНеизвестная модель. Проверьте активные модели через GET /v1/models.
429rate_limit_exceededПодождите согласно Retry-After или retry_after_seconds, затем повторите запрос с увеличивающимися интервалами.
500internal_error, temporary_errorПовторите запрос один-два раза с увеличивающимися интервалами.
503model_unavailable, upstream_timeout, temporary_errorПовторите запрос с увеличивающимися интервалами или выберите другую модель.

Все коды и правила повторных запросов: ошибки.

Примечания

  • Модели Claude доступны только через Anthropic Messages, но не через OpenAI Responses.
  • Токены рассуждений оплачиваются как выходные и входят в max_tokens. Оставляйте достаточно токенов и для рассуждений, и для ответа.
  • Храните ключи на доверенных серверах, записывайте ID запроса из ответа и повторяйте запросы только при ошибках 429, 500 и 503.

Аутентификация

AuthorizationBearer

Передавайте API-ключ в виде Authorization: Bearer <BEATAPI_API_KEY>.

Запрос

This endpoint expects an object.
modelenumОбязательный

Точный ID модели.

Прежние рабочие ID (claude-opus-5, claude-sonnet-5, claude-haiku-4-5-20251001) перечислены в разделе Старые модели.

Вызовите GET /v1/models со своим ключом, чтобы проверить, какие модели ему доступны.

claude-fable-5-1, claude-opus-5-5, claude-sonnet-5-5, claude-haiku-5-5

Допустимые значения:
max_tokensintegerОбязательный

Максимальное число генерируемых токенов, включая рассуждения.

Всегда передавайте это поле. Если его нет или оно равно 0, применяется лимит по умолчанию, который может оказаться ниже ожидаемого.

Максимально допустимое значение — 1 073 741 823; превышение возвращает 400 bad_request. При этом не превышайте максимальный объём вывода модели из таблицы выше.

max_tokens также используется для оценки необходимого баланса. Слишком большое значение может привести к 402 insufficient_credits, даже если фактический ответ был бы коротким. Указывайте столько токенов, сколько требуется задаче.

messageslist of objectsОбязательный

История диалога, от самого раннего сообщения к последнему. У каждого сообщения есть role (user или assistant) и content. В content передаётся строка либо массив блоков содержимого.

Основные типы блоков: text, image (источник base64 или URL), tool_use (в сообщении assistant) и tool_result (в сообщении user).

Пустой или отсутствующий массив messages приводит к 400 bad_request.

systemstring or list of objectsОпциональный

Системный промпт: строка либо массив блоков text. Добавьте cache_control к блоку, чтобы кэшировать длинный неизменяемый префикс.

streambooleanОпциональныйПо умолчанию false

Передавать ответ потоком событий SSE. См. раздел о потоковой передаче ниже.

stop_sequenceslist of stringsОпциональный

Строки, при обнаружении которых генерация прекращается. В ответе будет stop_reason: "stop_sequence".

toolslist of objectsОпциональный

Инструменты, которые может вызвать модель. У каждого есть name, description и input_schema (JSON Schema). При вызове инструмента модель возвращает stop_reason: "tool_use"; выполните инструмент и передайте результат в следующем блоке tool_result.

tool_choiceobjectОпциональный

Нужно ли модели использовать tools и каким образом.

auto оставляет выбор модели, any требует вызвать любой инструмент, tool — инструмент по имени, none запрещает инструменты.

{"type":"auto"}, {"type":"any"}, {"type":"tool","name":"..."}, {"type":"none"}

thinkingobjectОпциональный

Расширенные рассуждения. Поле type включает или отключает их. Токены рассуждений входят в лимит max_tokens и оплачиваются как выходные.

thinking.type принимает одно из значений выше. При enabled задайте thinking.budget_tokens: целое число не меньше 1 024 и меньше max_tokens.

thinking.display принимает summarized или omitted. Новые модели могут не возвращать текст рассуждений, если не запросить summarized.

Глубина адаптивных рассуждений задаётся через output_config.effort.

claude-fable-5-1: Используйте {"type":"adaptive"} и задавайте глубину через output_config.effort; budget_tokens отклоняется.

claude-opus-5-5: Используйте {"type":"adaptive"} и задавайте глубину через output_config.effort; budget_tokens отклоняется.

claude-sonnet-5-5: Используйте {"type":"adaptive"} и задавайте глубину через output_config.effort; budget_tokens отклоняется.

adaptive, enabled, disabled

output_configobjectОпциональный
cache_controlobjectОпциональный

Кэширование промпта. Добавьте к блоку system, messages или tools, чтобы кэшировать всё до этого блока включительно, либо на верхний уровень запроса. Значение ttl: 5m (по умолчанию) или 1h.

Чтение кэша, запись на 5 минут и запись на 1 час оплачиваются отдельно. Кэшированный префикс оплачивается как чтение кэша, а не как новый вход.

Количество токенов при чтении и создании кэша указано в usage.cache_read_input_tokens и usage.cache_creation_input_tokens.

{"type":"ephemeral"}

Ответ

Без потоковой передачи запрос возвращает один JSON-объект. Ниже приведён сокращённый пример.

idstringОпциональный

ID сообщения. Сохраняйте его вместе с ID запроса для обращений в поддержку и сверки расходов.

modelstringОпциональный

Модель, сформировавшая ответ.

contentlist of objectsОпциональный
stop_reasonstringОпциональный

end_turn — ответ завершён; max_tokens — достигнут лимит max_tokens; stop_sequence — сработала останавливающая последовательность; tool_use — модель вызвала инструмент.

usageobjectОпциональный

Ошибки

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
404
Not Found Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error