OhMyGPT

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 CompletionsClaudeGemini
max_tokens, max_completion_tokensmax_tokensmaxOutputTokens
temperature, top_p, top_ktemperature, top_p, top_ktemperature, topP, topK
stopstop_sequencesstopSequences
frequency_penalty, presence_penalty—frequencyPenalty, presencePenalty
seed—seed
response_format with json_schemaoutput_config.formatresponseMimeType 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 1400400
tools, tool_choicetools, tool_choicefunctionDeclarations, toolConfig
parallel_tool_callsdisable_parallel_tool_use—
usermetadata.user_id—
reasoning_effort, thinkingsee Thinkingsee 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.

On this page