Create a chat completion
POST https://api.alltokens.ru/api/v1/chat/completions
Content-Type: application/json
Запрос ответа модели по диалогу. Поддерживаются обычный и потоковый (stream) режимы.
Заголовки
| Заголовок | Обязательный | Описание |
|---|
| Authorization | Да | Bearer <API_KEY> |
| Content-Type | Да | application/json |
Тело запроса (основные поля)
| Поле | Тип | Описание |
|---|
| model | string | Идентификатор модели или алиас: router, auto, free — см. Routing |
| messages | array | Массив сообщений: { "role": "user" | "assistant" | "system", "content": "..." } |
| stream | boolean | true — потоковый ответ (SSE). По умолчанию false |
| temperature | number | 0..2. Случайность выбора токенов |
| max_tokens | integer | Максимум токенов в ответе |
| metadata | object | Цели и ограничения маршрутизации — см. Routing |
| extra_body | object | Альтернатива metadata для целей/ограничений |
Остальные параметры (top_p, stop, presence_penalty, tools, tool_choice и т.д.) поддерживаются по контракту совместимого API.
Пример (curl)
curl -X POST "https://api.alltokens.ru/api/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "router",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is 2+2?"}
],
"stream": false
}'
Ответ (200, non-streaming)
Корневой объект:
| Поле | Тип | Описание |
|---|
| id | string | ID генерации (gen-...) |
| provider | string | Провайдер, обработавший запрос |
| model | string | Фактическая модель |
| object | string | chat.completion |
| created | number | Unix-время создания |
| choices | array | Массив вариантов ответа (см. ниже) |
| usage | object | Использование токенов и стоимость (см. ниже) |
| alltokens_route | object | При не-streaming — доказательство маршрута (см. Route proof) |
Элемент choices[]
| Поле | Тип | Описание |
|---|
| index | number | Индекс варианта |
| message | object | Сообщение ассистента (см. ниже) |
| finish_reason | string | Причина завершения: stop, length и т.д. |
| native_finish_reason | string | null | Причина от провайдера |
| logprobs | object | null | Лог-вероятности (если запрашивались) |
message
| Поле | Тип | Описание |
|---|
| role | string | assistant |
| content | string | null | Текст ответа |
| refusal | string | null | Отказ модели (если есть) |
| reasoning | string | null | Рассуждения (если модель их отдаёт) |
| reasoning_details | array | Опционально. Детали reasoning (format, type, text/summary и т.д.) |
usage
| Поле | Тип | Описание |
|---|
| prompt_tokens | number | Токены промпта |
| completion_tokens | number | Токены ответа |
| total_tokens | number | Всего токенов |
| cost | number | Стоимость запроса (USD) |
| is_byok | boolean | Использовался ли свой ключ |
| prompt_tokens_details | object | Опционально (cached_tokens, audio_tokens и т.д.) |
| cost_details | object | Опционально (upstream_inference_cost и т.д.) |
| completion_tokens_details | object | Опционально (reasoning_tokens, audio_tokens и т.д.) |
alltokens_route (при non-streaming)
| Поле | Тип | Описание |
|---|
| trace_id | string | Внутренний ID запроса |
| candidates | object | Поле count (зарезервировано) |
| decision_reason | string | Причина выбора маршрута |
Дополнительно в ответе приходят заголовки x-alltokens-* — см. Route proof.
Коды ответов
| Код | Описание |
|---|
| 200 | Успех |
| 400 | Неверные параметры |
| 401 | Не авторизован |
| 404 | Модель не найдена или нет подходящих моделей по ограничениям |
| 429 | Превышен лимит запросов |
| 500 | Внутренняя ошибка |
Errors.