GET

/v1/schemas/openrouter/chat/responses

kind inputactivity chathash 23fde7b6extracted Jul 26, 2026version currentsource upstream spec ↗

Request body

40 properties · 0 required · 203 $defs
propertytypedescriptionconstraints
backgroundany
cache_controlAnthropicCacheControlDirectiveEnable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also …
debugChatDebugOptionsDebug options for inspecting request transformations (streaming only)
frequency_penaltyanyformat: double
image_configImageConfigProvider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details.
includeany
inputstring | ReasoningItem | EasyInputMessag…Input for a response request - can be a string or array of items
instructionsany
max_output_tokensany
max_tool_callsanyMaximum number of server-tool (e.g. `openrouter:web_search`) agent steps the model may take during a request. Defaults to 30, which is also the maximum. Ignored when `stop_server_tools_when` is set.
metadataRequestMetadataMetadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed.
modalitiesOutputModalityEnum[]Output modalities for the response. Supported values are "text" and "image".
modelstring
modelsstring[]
parallel_tool_callsany
pluginsAutoRouterPlugin | AutoBetaRouterPlugin | ModerationPlugin[]Plugins you want to enable for this request, including their settings.
presence_penaltyanyformat: double
previous_response_idanyNot supported. The Responses API is stateless: no responses are stored, so a previous response cannot be referenced. Requests with a non-null value are rejected with a 400 error. Send the full conversation history in `input` instead.
promptStoredPromptTemplate
prompt_cache_keyany
prompt_cache_optionsPromptCacheOptionsRequest-level prompt-cache controls. `mode: "explicit"` disables OpenAI-managed breakpoints so only blocks marked with `prompt_cache_breakpoint` are cached. Only supported by OpenAI GPT-5.6 and newer.
providerProviderPreferencesWhen multiple model providers are available, optionally indicate your routing preference.
reasoningany | objectConfiguration for reasoning mode in the responsenullable
routeenum**DEPRECATED** Use providers.sort.partition instead. Backwards-compatible alias for providers.sort.partition. Accepts legacy values: "fallback" (maps to "model"), "sort" (maps to "none").fallback | sort | null · deprecated
safety_identifieranyRecommended per-end-user identifier for abuse isolation. Use a stable ID, hash, or pseudonym. When a provider requires a user identity, OpenRouter folds it into the hashed identity sent upstream and never forwards it raw. If omitted, requests use an account-le…
service_tierenumauto | default | flex | priority | scale | null · default: "auto"
session_idstringA unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for obser…length ≤ 256
stop_server_tools_whenStopServerToolsWhenCondition[]Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. When a condition fires while the model is still emitting tool calls, the pending tool calls are executed and one final tu…items ≥ 1
storeconstfalse · default: false
streambooleandefault: false
temperatureanyformat: double
textobject | objectText output configuration including format and verbosity
tool_choiceenum | enum | enum | …
toolsany | Preview_WebSearchServerTool | Preview_20250311_WebSearchServerTool[]
top_kinteger
top_logprobsany
top_panyformat: double
traceTraceConfigMetadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations.
truncationenumauto | disabled | null
userstringA unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual u…length ≤ 256

Validate a payload

before you spend tokens
shell
$ curl -X POST https://modelschemas.com/v1/validate \
    -d '{"provider":"openrouter","endpointId":"responses","payload":{…}}'
→ {"valid": false, "errors": [{"path": "#", "keyword": "required", …}]}