# Параметры

Все поля запроса chat completions — что роутер проверяет, что меняет, что передает провайдеру и где работает каждое поле.

## Как роутер обрабатывает параметры

1. **Проверяет роутер:** `model`, `models`, `messages`, `stream`, `max_tokens`, `max_completion_tokens`, `tools`, `response_format` и `provider`. Неверный тип или значение — это `400`, где поле названо в `error.metadata.fields`.
2. **Передаются как есть:** любое другое поле уходит провайдеру без изменений. Поддерживает ли его модель, зависит от модели: смотрите `supported_parameters` модели в `GET /api/v1/models` или в [каталоге](/models). Неподдерживаемые параметры модель игнорирует.
3. **Удаляются в регионе Россия:** для моделей `ru-1/…` и `ru-2/…` роутер молча удаляет `provider`, `models`, `route`, `transforms`, `plugins`, `usage`, `include_reasoning`, `reasoning`, `web_search_options`, `prediction` и `debug`. `reasoning.effort` превращается в `reasoning_effort`.

> **Внимание:** Без `max_tokens` или `max_completion_tokens` роутер ставит `max_tokens` равным 4096: более длинный ответ заканчивается `finish_reason: "length"`. Задавайте лимит явно для длинных ответов и для моделей с рассуждениями — их токены рассуждений входят в лимит.

В карточках ниже **Регионы** показывает, где работает поле: Глобальный (ID вида `vendor/model`) и Россия (`ru-1/…`, `ru-2/…`).

## Модель и сообщения

### `model`

Тип: `string` · Регионы: Глобальный, Россия

ID модели из каталога. Обязателен, если не передан `models`.

### `models`

Тип: `string[]` · Регионы: Глобальный, Россия

Резервные модели, которые пробуются по порядку после `model`, если у модели нет маршрута или она дала сбой до первого токена. Всего не больше 3 попыток на запрос. См. [Модели и маршрутизация](/docs/ru/models-and-routing#резервные-модели).

### `messages`

Тип: `object[]` · Обязательный · Регионы: Глобальный, Россия

Диалог. У каждого сообщения должна быть `role`. См. [Chat completions](/docs/ru/chat-completions#сообщения-и-роли).

### `stream`

Тип: `boolean` · По умолчанию: `false` · Регионы: Глобальный, Россия

Отправлять ответ в виде server-sent events. См. [Потоковый ответ](/docs/ru/streaming).

## Длина ответа

### `max_tokens`

Тип: `integer` · По умолчанию: `4096` · Диапазон: 1 to 65536 · Регионы: Глобальный, Россия

Максимум токенов, которые может сгенерировать модель. Перед запросом роутер резервирует средства на это число токенов (не больше собственного лимита вывода модели), поэтому меньшее значение требует и меньшего баланса. Значения больше 65536 отклоняются с `400`.

### `max_completion_tokens`

Тип: `integer` · Диапазон: 1 to 65536 · Регионы: Глобальный, Россия

Новое название того же лимита. Если заданы оба, к обоим применяется меньшее значение.

## Сэмплирование

### `temperature`

Тип: `number` · Диапазон: 0 to 2 · Регионы: передается без проверки

Случайность ответа: ниже — предсказуемее, выше — разнообразнее. Значение по умолчанию зависит от модели, обычно 1.

### `top_p`

Тип: `number` · Диапазон: 0 to 1 · Регионы: передается без проверки

Nucleus sampling: учитываются только токены в пределах этой суммарной вероятности. Меняйте либо `temperature`, либо `top_p`, но не оба.

### `top_k`

Тип: `integer` · Регионы: передается без проверки

Учитываются только K самых вероятных токенов. `0` отключает ограничение. Поддерживают не все модели.

### `frequency_penalty`

Тип: `number` · Диапазон: -2 to 2 · Регионы: передается без проверки

Штрафует токены пропорционально тому, сколько раз они уже встречались; положительные значения уменьшают повторы.

### `presence_penalty`

Тип: `number` · Диапазон: -2 to 2 · Регионы: передается без проверки

Штрафует любой уже встречавшийся токен; положительные значения подталкивают модель к новым темам.

### `repetition_penalty`

Тип: `number` · Диапазон: 0 to 2 · Регионы: передается без проверки

Уменьшает повтор токенов из входных данных; `1` означает отсутствие штрафа. В основном для открытых моделей.

### `min_p`

Тип: `number` · Диапазон: 0 to 1 · Регионы: передается без проверки

Минимальная вероятность токена относительно самого вероятного.

### `seed`

Тип: `integer` · Регионы: передается без проверки

Делает сэмплирование воспроизводимым, если провайдер это поддерживает. Одинаковые seed и параметры обычно, но не всегда, дают одинаковый ответ.

### `stop`

Тип: `string | string[]` · Регионы: передается без проверки

Последовательности, на которых генерация останавливается; сама последовательность не возвращается.

### `logit_bias`

Тип: `object` · Регионы: передается без проверки

ID токенов и смещение от -100 до 100 для каждого: делает эти токены более или менее вероятными.

### `logprobs`

Тип: `boolean` · Регионы: передается без проверки

Возвращать логарифмы вероятностей выходных токенов. `top_logprobs` (от 0 до 20) дополнительно возвращает самые вероятные альтернативы.

## Инструменты и структурированный вывод

### `tools`

Тип: `object[]` · Регионы: Глобальный, Россия

Функции, которые может вызвать модель, в формате OpenAI. Непустой список отправляет запрос только на маршруты с поддержкой инструментов. См. [Вызов инструментов](/docs/ru/tool-calling).

### `tool_choice`

Тип: `string | object` · Регионы: передается без проверки

`auto`, `none`, `required` или объект с именем одной функции.

### `parallel_tool_calls`

Тип: `boolean` · Регионы: передается без проверки

Может ли модель запросить несколько вызовов инструментов в одном ответе.

### `response_format`

Тип: `object` · Регионы: Глобальный, Россия

`{"type": "json_object"}` запрашивает валидный JSON; `{"type": "json_schema", "json_schema": …}` запрашивает JSON по схеме и отправляет запрос только на маршруты с поддержкой структурированного вывода. См. [Структурированный вывод](/docs/ru/structured-outputs).

## Рассуждения

### `reasoning`

Тип: `object` · Регионы: Глобальный

Управляет рассуждениями моделей: `effort` (`minimal`, `low`, `medium`, `high`), или `max_tokens` для бюджета рассуждений, `exclude: true`, чтобы не включать рассуждения в ответ, `enabled`. В регионе Россия сохраняется только `effort` — как `reasoning_effort`. См. [Рассуждения](/docs/ru/reasoning).

### `reasoning_effort`

Тип: `string` · Регионы: передается без проверки

Сокращение OpenAI для `reasoning.effort`.

## Маршрутизация и приватность

### `provider`

Тип: `object` · Регионы: Глобальный, Россия

Куда может уйти запрос. Сам роутер применяет:

- `only`, `ignore`, `order`: списки slug провайдеров; slug `ru` обозначает регион Россия;
- `allow_fallbacks` (boolean): `false` оставляет один маршрут на модель;
- `zdr` (boolean): `true` отправляет запрос только моделям с эндпоинтом без хранения данных (ZDR);
- `data_collection` (`allow` или `deny`): `deny` исключает провайдеров, которые могут хранить данные или обучаться на них.

Остальные ключи объекта уходят в регион Глобальный как есть, без гарантий. См. [Модели и маршрутизация](/docs/ru/models-and-routing) и [Без хранения данных (ZDR)](/docs/ru/zero-data-retention).

## Другие поля

### `user`

Тип: `string` · Регионы: передается без проверки

Ваш ID конечного пользователя. Роутер его не хранит; некоторые провайдеры используют его для выявления злоупотреблений.

### `usage`

Тип: `object` · Регионы: Глобальный

Игнорируется: роутер всегда запрашивает usage, и в каждом ответе есть `usage` с `cost`.

### `stream_options`

Тип: `object` · Регионы: передается без проверки

`include_usage` в потоке всегда включен: последний чанк перед `[DONE]` содержит `usage`.

Поля, которых нет в этом списке, передаются провайдеру как есть. Роутер никогда не возвращает ошибку из-за неизвестного поля, но модель может его проигнорировать.
