/v1/responses requests and routes them to
the selected model provider. Some providers expose a native Responses-compatible
surface. Others expose chat completions or provider-native chat APIs, so
GoModel translates the request.
The compatibility rule follows Postel’s Law: GoModel translates portable model
features and accepts unfamiliar tool declarations without forwarding them to a
provider that cannot execute them. Fields that would change the meaning of the
model output are still rejected when they cannot be translated safely.
Routing modes
Chat-translated providers include Anthropic and Gemini native routing. They work
well for text, streaming, multimodal inputs supported by the target adapter, and
function tool loops. They cannot safely execute OpenAI-hosted tools.
Feature behavior
Anthropic does not currently accept translated
response_format or
text.verbosity settings through GoModel’s chat translation path. GoModel
rejects those fields instead of dropping them.The include field
include asks for extra annotations on response items, such as
reasoning.encrypted_content or file_search_call.results. It never changes
what the model does, so chat-translated providers accept it and return a
response without those annotations, exactly like a native provider that does
not support them. Clients that always attach include, such as Codex with
wire_api = "responses", work without extra configuration.
The one exception is message.output_text.logprobs, which requests real model
output rather than an annotation. GoModel rejects it for the same reason it
rejects top_logprobs.
Hosted tools
Hosted tools are executed by the upstream provider, not by the model text completion alone. Their payloads often reference provider-owned resources and runtime state:web_searchand its legacyweb_search_previewalias depend on the provider’s search implementation and event schema.file_searchreferences provider vector stores such asvector_store_ids.computer_use_previewdepends on a provider-managed computer session, display environment, and safety model.
namespace tools are omitted as a unit rather than flattened. Flattening would
change the tool names and break the client’s routing contract. A tool_choice
that selects an omitted tool is omitted too. If every tool is omitted,
parallel_tool_calls is also removed from the translated request.
This is graceful capability degradation, not hosted-tool emulation. In
particular, a response from a chat-translated provider does not imply that a web
search, file search, or computer action occurred. Use a native Responses
provider when the result depends on one of those tools running.
Agent SDKs
OpenAI Agents SDK clients can talk to Anthropic and Gemini models through GoModel for portable flows:- plain
Runner.run(...) Runner.run_streamed(...)over HTTP/SSE- local function tools
- SDK-managed local history replay
anthropic/claude-sonnet-4-20250514 and gemini/gemini-2.0-flash need model ID
pass-through mode:
run_config when calling Runner.run(...) or
Runner.run_streamed(...).