# Request parameters

> Which parameters the gateway forwards to the model on each endpoint, which it strips and which it rejects.

The gateway forwards to the model only the parameters on its endpoint's list.
Anything outside the list is silently stripped: the request runs as if it were
absent. So a parameter you are used to in one format may quietly disappear in
another: for example, only `/v1/chat/completions` accepts `seed`, and
`max_tokens` is called `max_output_tokens` on `/v1/responses`.

## Forwarded to the model

The gateway validates only the `model` field; the values of other parameters
are validated by the model's provider. If it rejects a value, the response is a
`400` with the `unsupported_value` or `invalid_value` code (see
[Errors](https://ai-seller.vibe-codes.ru/en/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` (only `effort` and `format`; the legacy `output_format` moves to `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` (clamped to 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`

## Special cases

- `stream_options` is stripped, but `"include_usage": true` on
  `/v1/chat/completions` is honored: usage arrives in the last stream chunk.
- `user`, `safety_identifier`, `prompt_cache_key` and `metadata` are not passed
  to the provider — the gateway sets its own identifiers. Different
  `prompt_cache_key` values still map to different cache partitions.
- On `/v1/responses` `store` is always `false`: conversations are not stored at
  the provider.
- Parameters that change the provider's pricing tier or routing are stripped
  without an error: `service_tier`, `inference_geo`, `speed`, `models`,
  `provider`, `route`, `transforms`, `plugins`, as well as web search and code
  execution (`web_search_options`, `mcp_servers`, `container` and the like).

## Tools

Only tools that your code executes, or that cost nothing but tokens, stay in
`tools`. The provider's built-in tools (web search, code execution, file
search, MCP) are silently removed from the list.

| Endpoint | Kept in `tools` |
| --- | --- |
| `/v1/chat/completions` | `function`, `custom` |
| `/v1/messages` | your own tools (no `type`, or `custom`) and Anthropic client tools: `bash_*`, `text_editor_*`, `memory_*`, `computer_*`, `browser_toolset_*`, `tool_search_tool_*` |
| `/v1/responses` | `function`, `custom`, `namespace`, `apply_patch`, `local_shell`, `computer`, `tool_search`, `shell` with a local environment |

If the list ends up empty, `tools`, `tool_choice` and `parallel_tool_calls` are
removed and the model answers without tools. But if `tool_choice` requires a
tool that is no longer there (`required`, a specific tool, `any`), the request
is rejected — see below.

## Rejected with a 400

These parameters change the shape of the response or refer to data stored at
the provider, so they cannot be dropped silently:

| Endpoint | What is rejected |
| --- | --- |
| `/v1/chat/completions` | `audio`, `modalities` containing `"audio"`, `"deferred": true`; message parts `input_audio` and `file` with a `file_id` |
| `/v1/messages` | `compaction`; `image` and `document` blocks with `source.type: "file"`, `container_upload` blocks |
| `/v1/responses` | `"background": true`, `previous_response_id`, `conversation`, `prompt`; `input` items of type `item_reference`, `input_file` and `input_image` parts with a `file_id` |
| all text endpoints | `tools` that is not an array; a `tool_choice` that requires a tool not on the list |

The response carries the `unsupported_parameter` code and, in the `param`
field, the parameter name or the path to the message part, e.g.
`messages[3].content[1]`. Send the full conversation history with every
request: the gateway keeps no provider-side state.
