Parameters
How sampling and output parameters apply on each model family.
OhMyGPT adds no defaults or limits of its own to sampling and output parameters. The model's vendor sets them.
On the native protocol
On a model's native protocol, every parameter reaches the model as you sent it, including vendor-specific ones such as Mistral's safe_prompt or Qwen's enable_thinking. The vendor's defaults and limits apply, and if the vendor rejects a value, you get its error message.
Claude and Gemini on Chat Completions
When you call Claude or Gemini through Chat Completions, these parameters take effect under the vendor's own name. Cells marked — have no equivalent on that model:
| Chat Completions | Claude | Gemini |
|---|---|---|
max_tokens, max_completion_tokens | max_tokens | maxOutputTokens |
temperature, top_p, top_k | temperature, top_p, top_k | temperature, topP, topK |
stop | stop_sequences | stopSequences |
frequency_penalty, presence_penalty | — | frequencyPenalty, presencePenalty |
seed | — | seed |
response_format with json_schema | output_config.format | responseMimeType and schema |
response_format with json_object | — | responseMimeType: "application/json" |
modalities with audio or image | — | responseModalities |
logprobs, top_logprobs, logit_bias, verbosity, audio, web_search_options, min_p, top_a, repetition_penalty | — | — |
n greater than 1 | 400 | 400 |
tools, tool_choice | tools, tool_choice | functionDeclarations, toolConfig |
parallel_tool_calls | disable_parallel_tool_use | — |
user | metadata.user_id | — |
reasoning_effort, thinking | see Thinking | see Thinking |
Claude requires max_tokens; if you leave it out, OhMyGPT sends the model's maximum output.
A model without an equivalent doesn't receive the parameter, and the request runs without it, as Anthropic's own OpenAI SDK compatibility does for fields Claude lacks. So one request body works across models, but the output follows the model's defaults for that setting, so Claude ignores seed. The exception is n: these models return one choice per request, so n above 1 returns 400 naming n before the request reaches the model, and nothing is charged. If a setting must take effect, send it to a model that has it. Whether a model accepts a value it does have, such as temperature on a reasoning model, is up to the model; its own error comes back to you as is.
For JSON output from Claude, use response_format with a json_schema:
curl https://api.ohmygpt.com/v1/chat/completions \
-H "Authorization: Bearer $OHMYGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4-5",
"max_tokens": 200,
"messages": [{"role": "user", "content": "Give me a color and its hex code."}],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "color",
"schema": {
"type": "object",
"properties": {"name": {"type": "string"}, "hex": {"type": "string"}},
"required": ["name", "hex"],
"additionalProperties": false
}
}
}
}'"message": { "role": "assistant", "content": "{\"hex\": \"#FF6B6B\", \"name\": \"Coral Red\"}" }Routing
provider on Chat Completions and Responses chooses which provider serves the model. It is read by OhMyGPT and does not reach the model. See Provider routing.