# Compatibility
Source: https://docs.mserve.ai/docs/resources/compatibility
Summary: What each route accepts, what reaches the model unchanged, and what returns 400. Nothing is dropped silently.
Availability: available
Last reviewed: 2026-08-25

A parameter that would change the meaning of the output if ignored is rejected with `400 unsupported_parameter` and `param` set to its name. Everything else is passed to the model and works as documented by OpenAI or ElevenLabs. Request bodies are validated against the OpenAI and ElevenLabs schemas.

## OpenAI routes

| Route                                  | Rejected parameters                                                                                           |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `POST /openai/v1/chat/completions`     | `audio`, `prediction`, `web_search_options`, `functions`, `function_call`, `modalities` other than `["text"]` |
| `POST /openai/v1/completions`          | none                                                                                                          |
| `POST /openai/v1/responses`            | `previous_response_id`, `conversation`, `background`, `prompt_cache_key`                                      |
| `POST /openai/v1/embeddings`           | none                                                                                                          |
| `POST /openai/v1/audio/speech`         | `response_format` outside `mp3 opus aac flac wav pcm` returns `400 invalid_value`                             |
| `POST /openai/v1/audio/transcriptions` | `response_format` outside `json text srt vtt verbose_json` returns `400 invalid_value`                        |
| `WS /openai/v1/realtime`               | `turn_detection.type` other than `server_vad` or `null`; `pcmu` and `pcma` audio formats                      |

Accepted on chat completions: `temperature`, `top_p`, `seed`, `max_tokens`, `max_completion_tokens`, `stop`, `presence_penalty`, `frequency_penalty`, `logit_bias`, `logprobs`, `top_logprobs`, `response_format`, `tools`, `tool_choice`, `n`, `user`, `reasoning_effort`, `stream`, `stream_options`.

## ElevenLabs routes

| Route                                                      | Rejected parameters                                     |
| ---------------------------------------------------------- | ------------------------------------------------------- |
| `POST /elevenlabs/v1/speech-to-text`                       | `diarize`, `num_speakers` (`422 unsupported_parameter`) |
| `POST /elevenlabs/v1/voices/add`                           | invalid `labels` JSON (`422 invalid_labels`)            |
| `WS /elevenlabs/v1/text-to-speech/{voice_id}/stream-input` | unknown `output_format` closes with `1008`              |

Accepted: `model_id` (any `eleven_*` id resolves to the model for that voice), `voice_settings`, `output_format` (full enum), `seed`, `remove_background_noise`.

## Model and voice ids

| You send                                                                             | Resolves to                                                       |
| ------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| `tts-1`, `tts-1-hd`, `eleven_multilingual_v2`, `eleven_turbo_v2_5`, any `eleven_*`   | `kokoro-82m` for preset voices, `chatterbox` for cloned voices    |
| `whisper-1`, `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`, `scribe_v1`, `scribe_v2` | `whisper-large-v3`                                                |
| `eleven_english_sts_v2`, `eleven_multilingual_sts_v2`                                | `chatterbox-vc`                                                   |
| OpenAI voice names, ElevenLabs premade ids                                           | the mserve preset in the [voice table](/docs/voice#voices)        |
| Unknown OpenAI model ids                                                             | `404 model_not_found`, the message names the nearest mserve model |

## Tested with the official SDKs

Every route on this page is tested with the official `openai` and `elevenlabs` SDKs in Python and Node before each release. Response shapes match the OpenAI and ElevenLabs schemas.
