Parameter Compatibility
Which parameters work with which models.
Guaranteed Compatible (all models)
| Parameter | Description |
|---|---|
model | Model name |
messages | Message array |
stream | Enable SSE streaming |
max_tokens / max_completion_tokens | Max output tokens |
temperature | Sampling temperature |
top_p | Nucleus sampling |
stop | Stop sequences |
seed | Deterministic sampling |
modelDescription · Model namemessagesDescription · Message arraystreamDescription · Enable SSE streamingmax_tokens / max_completion_tokensDescription · Max output tokenstemperatureDescription · Sampling temperaturetop_pDescription · Nucleus samplingstopDescription · Stop sequencesseedDescription · Deterministic samplingWidely Supported (most models)
| Parameter | Description |
|---|---|
tools / tool_choice | Function calling |
response_format | JSON mode / structured outputs |
frequency_penalty | Repetition reduction |
presence_penalty | Topic diversity |
logprobs / top_logprobs | Token probabilities |
tools / tool_choiceDescription · Function callingresponse_formatDescription · JSON mode / structured outputsfrequency_penaltyDescription · Repetition reductionpresence_penaltyDescription · Topic diversitylogprobs / top_logprobsDescription · Token probabilitiesModel-Specific
| Parameter | Models |
|---|---|
top_k | Anthropic, some open models |
repetition_penalty | Open models (Llama, Mistral) |
min_p | Some open models |
reasoning_effort / reasoning | Reasoning models only. See Reasoning Controls |
top_kModels · Anthropic, some open modelsrepetition_penaltyModels · Open models (Llama, Mistral)min_pModels · Some open modelsreasoning_effort / reasoningModels · Reasoning models only. See Reasoning ControlsCheck supported_parameters on GET /v1/models for the resolved model before relying on any of these.
How It Works
On the chat wire, parameters are forwarded by a deny-list: anything that is not a credential, an SSRF vector, or money and tenancy truth is passed through as sent, so a brand-new provider knob reaches the wire without a change here. The Anthropic and Responses wires behave differently: both rebuild the request from a fixed set of fields, so a knob outside that set is dropped rather than forwarded. Unsupported params are silently ignored by most providers (the same behavior as OpenRouter).
Several things modify a request on the way out:
- A reviewed adapter policy removes or rewrites parameters a specific provider or model is known to reject. The reasoning-related rules are listed in Reasoning Controls.
- Reactive repair. When a provider returns a 4xx that names its own fix ("Unsupported parameter: 'stop'", "does not support 'max' with this model"), the marketplace can apply that fix and retry the same seller instead of failing you. This is gated by
ADAPTER_REPAIR, which shipsoff; until an operator arms it the provider's error surfaces instead.model,messages,tools,tool_choiceandresponse_formatare protected from the generic strip, though a few narrowly-scoped rules do rewritemessagesandtool_choicewhere a provider names them specifically. - Prompt-cache injection, which can add a
prompt_cache_keyand Anthropiccache_controlbreakpoints. stream_options: {"include_usage": true}, auto-injected for metering on streaming chat requests.
Most of these are named in the X-SI-Adapted-Params response header, which is the best available record of
what changed. It is not exhaustive: when you send no stream_options of your own the injection is
deliberately silent, and fields dropped by an Anthropic or Responses wire rebuild are not itemised. (If you
did send stream_options and it was overwritten, that one is disclosed.)
A provider 4xx the marketplace cannot interpret is returned to you as a 400. It does not automatically
fail over to another seller.