Справочник API/Эндпоинты и примеры/Messages
Messages
Эндпоинт, совместимый с Anthropic Messages; его используют Claude Code и Anthropic SDK. Запрос обязан содержать max_tokens, system — поле верхнего уровня, поддерживаются thinking и кэширование промптов через cache_control.
https://api.wokey.ai/v1/messages· Совместим с Anthropic MessagesНа этой страницеexpand_more
Примерlink
Для Anthropic SDK и Claude Code укажите base URL https://api.wokey.ai без /v1: клиент сам добавляет /v1/messages.
curl https://api.wokey.ai/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"system": "You are a helpful assistant.",
"messages": [
{ "role": "user", "content": "Hello" }
]
}'Заголовкиlink
| Заголовок | Значение | Описание |
|---|---|---|
x-api-keyОбязательно | YOUR_API_KEY | Ваш API-ключ Wokey. Подходит и Authorization: Bearer YOUR_API_KEY — так по умолчанию делают новые Anthropic SDK. |
anthropic-version | 2023-06-01 | Необязательно. Шлюз всегда обращается к апстриму с версией 2023-06-01. |
anthropic-beta | string | Необязательно. Объединяется и пересылается в Claude. Моделям с контекстом 1M beta context-1m не нужна. |
Content-TypeОбязательно | application/json | Тело запроса — JSON. |
X-End-User-Id | string | Необязательно. ID вашего конечного пользователя, 1–128 видимых символов ASCII. С ним ограничения за повторные нарушения действуют только на этого пользователя. |
Параметры запросаlink
Ниже — параметры, которые шлюз читает или которые меняют его поведение. Остальные параметры Anthropic пересылаются в Claude как есть.
| Параметр | Тип | Описание |
|---|---|---|
modelОбязательно | string | ID модели, в точности совпадающий с ID из списка моделей. |
max_tokensОбязательно | integer | Лимит выходных токенов, положительное целое. Без него шлюз возвращает 400 и ничего не отправляет апстриму. |
messagesОбязательно | array | Сообщения диалога. Каждому tool_use нужен соответствующий tool_result в следующем сообщении, иначе шлюз вернёт 400. |
system | string | array | Системный промпт — на верхнем уровне, а не внутри messages. |
thinking | object | Расширенные рассуждения. Некоторые новые модели принимают только режим adaptive, и шлюз корректирует несовместимые значения по правилам модели. Уровень рассуждений задаётся в output_config.effort. |
cache_control | object | Точки кэширования промптов на блоках контента, пересылаются в Claude как есть. Ставьте одну в конце system и одну на последнем сообщении. |
stream | boolean | При true ответ приходит потоком событий SSE. |
tools | array | Описания инструментов; поддерживается и tool_choice. |
temperature | number | Принимают только Claude Opus 4.6, Sonnet 4.6, Sonnet 4.5 и Haiku 4.5, значение ограничивается диапазоном 0–1; новым моделям не пересылается. top_p и top_k в Claude не пересылаются. |
metadata | object | Не пересылается апстриму. |
provider | object | Расширение Wokey для выбора или исключения поставщиков. Используется только для маршрутизации и не пересылается апстриму. |
Как Wokey обрабатывает запросlink
Что шлюз делает до и после пересылки и чем это отличается от прямого вызова официального API.
- Модели Claude пересылаются в формате Messages без преобразования. Шлюз корректирует несколько параметров по правилам модели (см. таблицу) и при необходимости добавляет точки кэширования промптов.
- Модели с собственным API Messages — DeepSeek, Kimi, Grok и другие — тоже пересылаются как есть. GPT и другим моделям нужно преобразование; тогда thinking и output_config не действуют, а блоки thinking в истории пропускаются.
- Блоки document (PDF) работают только у моделей Claude.
- Тело запроса к Claude ограничено 32 МиБ; при превышении возвращается 413 request_body_too_large.
- POST /v1/messages/count_tokens считает входные токены.
Если у модели несколько поставщиков, добавьте в тело запроса объект provider, чтобы выбрать или исключить поставщиков. Выбор поставщиков и их порядка →
Ответlink
{
"id": "msg_...",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-5-5",
"content": [{ "type": "text", "text": "Hello! How can I help you today?" }],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 21,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 10
}
}- Заголовок ответа x-wokey-request-id — ID запроса в Wokey, request-id — ID от Anthropic. Сообщая о проблеме, указывайте x-wokey-request-id.
- Claude: input_tokens не включает кэш; запись и чтение кэша — в cache_creation_input_tokens и cache_read_input_tokens.
- GPT и другие преобразуемые модели: input_tokens включает кэшированные токены, а cache_read_input_tokens повторяет их число — это отличается от правил Anthropic.
Потоковая передачаlink
Порядок событий такой же, как у Anthropic: message_start, content_block_*, message_delta, message_stop.
event: message_start
data: {"type":"message_start","message":{"id":"msg_...","type":"message","role":"assistant","content":[],"usage":{"input_tokens":21,"output_tokens":1}}}
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":"Hello!"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":10}}
event: message_stop
data: {"type":"message_stop"}- Для Claude поток событий апстрима передаётся без изменений.
- Для других моделей шлюз формирует события в том же порядке: usage в message_start равен 0, ориентируйтесь на output_tokens в message_delta; блоки вызовов инструментов идут последними.
- Ошибка во время потока приходит событием event: error.
- Пока апстрим не прислал первый байт, шлюз периодически отправляет строки-комментарии SSE, которые клиенты игнорируют.
Формат ошибокlink
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "max_tokens is required for Anthropic Messages requests. Add max_tokens or use /chat/completions for OpenAI-compatible requests."
}
}Ошибки в формате Anthropic; error.type зависит от статуса, например 400 invalid_request_error, 401 authentication_error, 402 billing_error, 429 rate_limit_error, 529 overloaded_error. Что означает каждый статус и что делать, см. Коды ошибок и устранение неполадок →