Overview
The Responses Format Converter lets OpenAI Responses clients — the OpenAI SDKclient.responses API, Codex CLI, and other Responses-based tools — call
Anthropic, Gemini, and Chat Completions models. Models that natively
support the Responses API are passed through unchanged on the same route.
Configuration
SDK Configuration
Set your base URL to:cURL / Direct API
Usage Examples
- Python SDK
- TypeScript SDK
- cURL
Stateless Multi-Turn
Converted models keep no server-side conversation state. Sendstore: false
(or omit store), and carry the history yourself: on every turn, append the
complete response.output array of the previous response to input,
followed by your new items.
- Do not filter, reorder, or rewrite output items. Reasoning items may have an
empty
summaryand exist only to carryencrypted_content; they must stay directly before the function call they were returned with. - Every
function_call_outputmust reference acall_idthat appears in the same request’sinput. Duplicatecall_idvalues in one history are rejected with400. encrypted_contentis opaque provider state — Anthropic thinking signatures or Gemini thought signatures. It is only valid for the provider family that issued it. Content issued by another provider is ignored rather than replayed.
Thinking and Signatures
Gemini 3 models validate thought signatures on function calls in the current
turn. This is a native model requirement, not a converter rule; see Google’s
Thought signatures
guide. The converter’s part is to return each signature inside a reasoning item
and put it back on the exact function call part when you replay the item.
Gemini thinking levels
For Gemini 3 targets,reasoning.effort accepts low, medium, or high and maps to thinkingLevel; Gemini 2.5 uses thinkingBudget. Native model levels such as minimal are not exposed by this conversion path. The upstream model must support the chosen level.
Supported Features
A stream always ends with exactly one terminal event:
response.completed,
response.incomplete (output limit or content filter), or response.failed
(upstream error or truncated stream).
prompt_cache_key, client_metadata, and
stream_options.include_obfuscation are accepted but have no effect.
Not Supported
For converted models, anything that cannot be expressed in the target protocol returns400 instead of being silently dropped:
If you need these features with an OpenAI model, use the native
/v1/responses route.
Codex CLI
Codex CLI works with this route using a custom provider withwire_api = "responses" and the base URL above. Disable hosted web search for
converted models (web_search = "disabled"), because hosted tools are rejected.
Related Docs
Converters Overview
All converter routes
Native Responses
/v1/responses for OpenAI-compatible modelsRouting & Protocols
Native routes versus converter routes