# Параметры запроса

> Какие параметры шлюз передаёт модели на каждом эндпоинте, какие вырезает и какие отклоняет.

Шлюз передаёт модели только параметры из списка своего эндпоинта. Параметр вне
списка молча вырезается: запрос выполняется, как если бы его не было. Поэтому
параметр, который вы привыкли передавать в одном формате, в другом может тихо
пропасть: например, `seed` принимает только `/v1/chat/completions`, а
`max_tokens` в `/v1/responses` называется `max_output_tokens`.

## Передаются модели

Шлюз проверяет только поле `model`; значения остальных параметров проверяет
провайдер модели. Если он отклонил значение, ответ — `400` с кодом
`unsupported_value` или `invalid_value` (см. [Ошибки](https://ai-seller.vibe-codes.ru/docs/errors)).

### `/v1/chat/completions`

`model`, `messages`, `stream`, `temperature`, `top_p`, `max_tokens`, `max_completion_tokens`, `stop`, `seed`, `n`, `presence_penalty`, `frequency_penalty`, `logit_bias`, `logprobs`, `top_logprobs`, `response_format`, `tools`, `tool_choice`, `parallel_tool_calls`, `functions`, `function_call`, `prediction`, `reasoning_effort`, `verbosity`, `prompt_cache_retention`, `top_k`, `min_p`, `repetition_penalty`, `thinking`, `enable_thinking`, `thinking_budget`, `reasoning`

### `/v1/messages`

`model`, `messages`, `system`, `max_tokens`, `stop_sequences`, `stream`, `temperature`, `top_p`, `top_k`, `tools`, `tool_choice`, `thinking`, `cache_control`, `output_config` (только `effort` и `format`; устаревшее `output_format` переносится в `output_config.format`)

### `/v1/responses`

`model`, `input`, `instructions`, `stream`, `temperature`, `top_p`, `top_logprobs`, `max_output_tokens`, `max_tool_calls`, `tools`, `tool_choice`, `parallel_tool_calls`, `reasoning`, `text`, `truncation`, `include`, `prompt_cache_retention`

### `/v1/images/generations`

`model`, `prompt`, `n` (приводится к диапазону 1–10), `size`, `aspect_ratio`, `resolution`, `quality`, `background`, `image`, `images`, `output_format`, `output_compression`, `response_format`

### `/v1/videos`

`model`, `prompt`, `seconds`, `duration`, `duration_seconds`, `size`, `aspect_ratio`, `resolution`, `image`, `images`, `video`, `input_reference`, `negative_prompt`, `seed`

## Особые случаи

- `stream_options` вырезается, но `"include_usage": true` в
  `/v1/chat/completions` соблюдается: usage придёт последним чанком потока.
- `user`, `safety_identifier`, `prompt_cache_key` и `metadata` провайдеру не
  передаются — шлюз ставит свои идентификаторы. Разные значения
  `prompt_cache_key` по-прежнему дают разные разделы кэша.
- В `/v1/responses` `store` всегда `false`: переписка у провайдера не хранится.
- Вырезаются без ошибки параметры, меняющие тариф или маршрут у провайдера:
  `service_tier`, `inference_geo`, `speed`, `models`, `provider`, `route`,
  `transforms`, `plugins`, а также веб-поиск и исполнение кода
  (`web_search_options`, `mcp_servers`, `container` и подобные).

## Инструменты

В `tools` остаются только инструменты, которые исполняет ваш код или которые
стоят одних токенов. Встроенные инструменты провайдера (веб-поиск, исполнение
кода, поиск по файлам, MCP) молча убираются из списка.

| Эндпоинт | Остаются в `tools` |
| --- | --- |
| `/v1/chat/completions` | `function`, `custom` |
| `/v1/messages` | ваши инструменты (без `type` или `custom`) и клиентские инструменты Anthropic: `bash_*`, `text_editor_*`, `memory_*`, `computer_*`, `browser_toolset_*`, `tool_search_tool_*` |
| `/v1/responses` | `function`, `custom`, `namespace`, `apply_patch`, `local_shell`, `computer`, `tool_search`, `shell` с локальным окружением |

Если после этого список опустел, `tools`, `tool_choice` и `parallel_tool_calls`
удаляются, и модель отвечает без инструментов. Но если `tool_choice` требует
вызвать инструмент, которого не осталось (`required`, конкретный инструмент,
`any`), запрос отклоняется — см. ниже.

## Отклоняются с ошибкой 400

Эти параметры меняют сам вид ответа или ссылаются на данные, хранящиеся у
провайдера, поэтому молча убрать их нельзя:

| Эндпоинт | Что отклоняется |
| --- | --- |
| `/v1/chat/completions` | `audio`, `modalities` с `"audio"`, `"deferred": true`; части сообщений `input_audio` и `file` с `file_id` |
| `/v1/messages` | `compaction`; блоки `image` и `document` с `source.type: "file"`, блоки `container_upload` |
| `/v1/responses` | `"background": true`, `previous_response_id`, `conversation`, `prompt`; элементы `input` типа `item_reference`, части `input_file` и `input_image` с `file_id` |
| все текстовые | `tools` не массивом; `tool_choice`, требующий инструмент, которого нет в списке |

В ответе приходит код `unsupported_parameter` и в поле `param` — имя параметра
или путь к части сообщения, например `messages[3].content[1]`. Историю
разговора передавайте целиком в каждом запросе: состояние на стороне
провайдера шлюз не хранит.
