POST /chat/completions
Создание chat completion, с потоком или без. Тело запроса, ответ и коды ответов.
POST
/api/v1/chat/completionsAPI-ключСоздает chat completion в формате OpenAI. Полный список полей тела и что делает каждое — в разделе Параметры. Машиночитаемый контракт: openapi.yaml.
Тело запроса
| Поле | Тип | |
|---|---|---|
model | string | ID модели. Обязательно, если не указан models. |
models | string[] | Резервные модели, которые пробуются после model. |
messages | object[] | Обязательно. Диалог. |
stream | boolean | Server-sent events вместо одного JSON. |
max_tokens, max_completion_tokens | integer | Лимит ответа, от 1 до 65536; 4096, если не указан. |
tools, tool_choice | Вызов инструментов. | |
response_format | object | Режим JSON или JSON Schema. |
reasoning | object | Уровень и бюджет рассуждений. |
provider | object | only, ignore, order, allow_fallbacks, zdr, data_collection. |
| любое другое поле | Передается провайдеру. |
Ответ
Без stream: объект chat.completion.
| Поле | Тип | |
|---|---|---|
id | string | ID генерации, gen-<uuid>. |
object | string | chat.completion |
created | integer | Время в формате Unix. |
model | string | Модель, которая ответила. |
provider | string | Провайдер, на котором работает модель (глобальный регион), или Russia. |
choices[].message | object | role, content, tool_calls, reasoning. |
choices[].finish_reason | string | stop, length, tool_calls, content_filter или error. |
choices[].native_finish_reason | string | Собственное значение провайдера. |
usage | object | prompt_tokens, completion_tokens, total_tokens, cost (PnP), prompt_tokens_details.cached_tokens, completion_tokens_details.reasoning_tokens. |
С "stream": true: text/event-stream из событий chat.completion.chunk, комментарии keep-alive, финальный chunk с usage, затем data: [DONE]. Подробнее — в разделе Потоковая передача.
Заголовки
| Заголовок | |
|---|---|
X-Request-Id | В каждом ответе. |
X-Generation-Id | В потоковых ответах; в ответе без потока ID находится в id. |
Коды ответов
200, 400, 401, 402, 403, 409, 413, 422, 429, 502, 503, 504: см. Ошибки.
Пример
curl https://router.nodul.ru/api/v1/chat/completions \
-H "Authorization: Bearer $NODUL_ROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "google/gemma-3-4b-it", "messages": [{"role": "user", "content": "Hello"}], "max_tokens": 100}'Попробуйте запросы со своим ключом в песочнице на странице API вашего пространства в кабинете.