Messages API
OdiRouter Messages API принимает формат Anthropic Messages. Он подходит для сценариев генерации текста, где используется Anthropic-совместимая структура сообщений. Непотоковый запрос возвращает полное сообщение одним ответом; потоковый запрос возвращает события инкрементально через SSE.
POST {BASE_URL}/messagesТело запроса должно включать как минимум model, max_tokens и messages. system является необязательным полем верхнего уровня. Если stream не передан или равен false, endpoint возвращает один JSON-ответ; если stream: true, ответ возвращается как SSE-события.
Непотоковый пример запроса
Заголовок раздела «Непотоковый пример запроса»curl -sS "${BASE_URL}/messages" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 256, "system": "You are a concise technical assistant.", "messages": [ { "role": "user", "content": "Explain how to connect to the OdiRouter Messages API in two points." } ] }'Потоковый пример запроса
Заголовок раздела «Потоковый пример запроса»curl -N "${BASE_URL}/messages" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 256, "messages": [ { "role": "user", "content": "Stream two integration suggestions." } ], "stream": true }'Непотоковый пример ответа
Заголовок раздела «Непотоковый пример ответа»{ "id": "msg_xxx", "type": "message", "role": "assistant", "model": "claude-sonnet-4-6", "content": [ { "type": "text", "text": "1. Configure the Base URL and API Key.\n2. Send requests to /v1/messages." } ], "stop_reason": "end_turn", "usage": { "input_tokens": 28, "output_tokens": 32 }}Потоковый пример ответа
Заголовок раздела «Потоковый пример ответа»event: message_startdata: {"type":"message_start","message":{"id":"msg_xxx","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6"}}
event: content_block_deltadata: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"1. Configure the Base URL"}}
event: message_deltadata: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":32}}
event: message_stopdata: {"type":"message_stop"}Примечания к ответу
Заголовок раздела «Примечания к ответу»- Непотоковый текст находится в content blocks
textвнутри массиваcontent. - Потоковые ответы используют SSE.
event:обозначает тип события, аdata:содержит payload события. - Используйте поле
usageответа как источник истины по потреблению.