Parameter Normalization
OpenGateway preserves your request intent and adapts parameters to each provider's contract. Debug mode surfaces every correction and transformation.
You send one OpenAI-shaped request. Behind it sit many providers, each with its
own contract — some reject top_p, some rename max_tokens, some want a
reasoning budget instead of reasoning_effort. OpenGateway makes your request
work everywhere without making you rewrite it per provider.
The principle#
OpenGateway preserves your intent and corrects only what a provider cannot accept. It never silently drops a field and pretends nothing happened — every adjustment is observable through debug mode.
This is the whole point: the gateway does work on your behalf, and it tells you what that work was.
What gets normalized#
Adjustments show up under debug.normalizations, each as one of three actions:
| action | meaning |
|---|---|
strip | the provider does not support the field, so it is removed |
override | the value is forced to satisfy a provider rule (e.g. a reasoning model that requires temperature: 1) |
add | the gateway injects a provider-specific field (e.g. a reasoning budget) |
Every entry records the param, the action, and the before / after
values.
"normalizations": [{ "param": "reasoning_effort", "action": "strip", "before": "high", "after": null },{ "param": "temperature", "action": "override", "before": 0.5, "after": 1 }]
Seeing it#
By default, normalization always happens — debug mode just makes it visible.
Set extra.debug: ["normalizations"] and the response includes the list.
Opt in to see normalizations, deprecations, and routing.
Opting out#
Active correction is the default. To send your request to the provider exactly
as written — no temperature clamp, no stripped field — set
extra.normalize: false. The gateway then applies only the essential format
conversion needed to reach the provider, and if the provider rejects a value
you get its error back instead of a silently corrected request. This is for
advanced users who would rather see a provider's constraint than have the
gateway smooth it over.