Comma-separated key:value usage-attribution tags (e.g. tenant:acme,project:demo, max 8). Recorded on the generation's billing/metrics rows; group spend by any key via GET /v2/analytics/usage?group_by=. Header-borne twin of the /v3/session URL prefix tags (which win per key when both are present); opper.-prefixed keys and session_id are reserved. Malformed values return 400.
Opt in to automatic prompt caching for Anthropic-family models: {"type":"ephemeral"} (optionally "ttl":"1h"). Places one moving cache breakpoint on the largest cacheable prefix. Also settable per content part for precise placement. Caching is off unless set; no-op on providers with automatic server-side caching (OpenAI
Fallback models tried in order when the model before them fails for any reason (provider error; rate limit; timeout; a member blocked by one of your rules). Same OpenRouter shape: send the primary in model and the rest here; or omit model and the first entry is the primary. Each entry is any model string: a bare pooled name; a provider/model id; an org alias. Not allowed together with a dynamic/ route. At most 10 entries. Which model answered is in meta.routing.served and the X-Opper-Served-Model header; the model field still echoes what you sent.
OpenAI cache-routing key: a stable name for the prompt prefix this request shares with others (e.g. a document id for a fan-out over one context). Forwarded to OpenAI and used to keep requests that share the key on the same cache replica at providers with per-replica prompt caches.
Processing tier. flex: discounted and slower; when the provider has no flex capacity the call fails with 429 instead of running at the full price. priority (alias fast): faster at a premium; falls back to the default tier. ultrafast: fastest; falls back to priority then default. economy: the same model cheaper and slower where a provider sells it under its own model id; it never falls back to the default tier. default and auto: the provider default. A model without an endpoint for the requested tier runs at the default tier. The tier that ran is in the X-Opper-Served-Service-Tier header.
OpenAI end-user identifier. Hashed and used as the cache replica hint on providers with per-replica prompt caches when neither prompt_cache_key nor an X-Session-Affinity header is sent.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Opper","description":"The European AI gateway for agents: 700+ models from 60+ providers through one EU-hosted API, drop-in for the OpenAI, Anthropic and Gemini SDKs.","colors":{"primary":"#14cdcd","light":"#24cdcd","dark":"#2d9393"},"logo":{"light":"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/logo/light.svg?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=fd4170c482c6cebc3c20d8f7f7e033f8","dark":"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/logo/dark.svg?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=328888ac1f44b63c468d022fda86421d"},"favicon":"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/favicon.png?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=f1229b80ac7eee56ba2c14789e5fe22e","api":{"examples":{"defaults":"required","languages":["Shell","python","typescript"]}},"appearance":{"default":"system"},"navbar":{"links":[{"href":"mailto:support@opper.ai","label":"Support"},{"href":"https://discord.gg/wcT3bc7Y4Y","label":"Discord"}],"primary":{"type":"button","label":"Login","href":"https://platform.opper.ai/auth/signin"}},"footer":{"socials":{"x":"https://x.com/opperai","github":"https://github.com/opper-ai","linkedin":"https://linkedin.com/company/opper-ai"}},"integrations":{"plausible":{"domain":"docs.opper.ai"}},"contextual":{"options":["copy","view"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"opper","hasAudioNarration":false,"actualSubdomain":"opper","customDomains":["docs.opper.ai"],"gitSource":{"type":"github","owner":"opper-ai","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9fcac90fba1e9dbe1a854","collectionId":"bca16535-50ee-4150-ab58-0ceafaa4e90b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9fcac90fba1e9dbe1a854"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeb33f886e5c4288ac546f6","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Documentation","count":90},{"language":"default","tag":"API Reference","count":88},{"language":"default","tag":"Platform APIs","count":46},{"language":"default","tag":"Management","count":35},{"language":"default","tag":"Apps","count":29},{"language":"default","tag":"Multimodality","count":28},{"language":"default","tag":"Build","count":27},{"language":"default","tag":"Observe \u0026 Control","count":16},{"language":"default","tag":"Gateway","count":14},{"language":"default","tag":"Compatibility","count":13}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@keyframes oppFade{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes oppBlink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes oppDot{0%,80%,to{opacity:.25}40%{opacity:1}}.opp-term .opp-line{opacity:0;animation:oppFade .4s ease forwards}.opp-term a{color:inherit;text-decoration:none;cursor:default}.opp-cursor{display:inline-block;width:7px;height:1em;margin-left:5px;vertical-align:text-bottom;border-radius:1px;background:#14cdcd;animation:oppBlink 1.1s step-end infinite}.opp-dots span{display:inline-block;width:5px;height:5px;margin-right:3px;border-radius:50%;background:#6e7681;animation:oppDot 1.2s infinite}.opp-dots span:nth-child(2){animation-delay:.2s}.opp-dots span:nth-child(3){animation-delay:.4s}.opp-replay{margin-left:auto;background:0 0;border:1px solid #2b3440;color:#8b949e;font:inherit;font-size:11px;padding:2px 9px;border-radius:6px;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .3s,color .2s,border-color .2s}.opp-replay.show{opacity:1;pointer-events:auto}.opp-replay:hover{color:#14cdcd;border-color:#14cdcd}"}],"page":{"pagePath":"v3-api-reference/compatibility/chat-completions","slug":"/v3-api-reference/compatibility/chat-completions","pageMetadata":{"title":"Chat Completions","openapi":"post /v3/compat/chat/completions","description":"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.","href":"/v3-api-reference/compatibility/chat-completions"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Chat Completions","openapi":"post /v3/compat/chat/completions","description":"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.","href":"/v3-api-reference/compatibility/chat-completions"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/opper/40a2b9bd0ec03258/script.js"],"openApiReferenceData":{"operation":{"description":"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.","operationId":"chatCompletions","parameters":["aad5ff90-e106-43a4-a172-0f99b381ed93","e6f08ca7-47bf-4ee8-8b14-ed0440ee70d5","1c1b8c49-d90e-4652-931b-6664d589148c"],"requestBody":"075824cf-c1b8-4ebc-9f19-5d12e78055fd","responses":{"200":"857670d6-68a2-4703-9921-1c9f43fe85fa","400":"3b7671e4-82ab-4b41-bcdd-9364d8b7bdc3","401":"023fc000-8a51-411f-b08c-73db10b7ea68","500":"8aa044f5-407d-4ab2-8fe9-71cc0bd2b96d"},"summary":"Chat Completions API","tags":["Compatibility"],"method":"post","type":"path","servers":["c2b11331-7fab-45b2-bf5b-f9b364dfc679","7c93fdae-cb5e-47b9-ac9b-8536ea6166cd"],"security":["5865a3c7-1a9d-4964-80f4-c65785131374"],"path":"/v3/compat/chat/completions","baseUrlOptions":["https://api.opper.ai","http://localhost:8080"],"title":"Chat Completions API","codeSamples":[],"requestExampleLanguages":["bash","python","typescript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"aad5ff90-e106-43a4-a172-0f99b381ed93":{"description":"Function name for tracing and project-level guardrail function-scope filtering.","in":"header","name":"X-Opper-Name","schema":{"type":"string","description":"Function name for tracing and project-level guardrail function-scope filtering.","uniqueKey":"","typeLabel":"string"}},"e6f08ca7-47bf-4ee8-8b14-ed0440ee70d5":{"description":"Parent span ID for distributed tracing context.","in":"header","name":"X-Opper-Parent-Span-Id","schema":{"format":"uuid","type":"string","description":"Parent span ID for distributed tracing context.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"1c1b8c49-d90e-4652-931b-6664d589148c":{"description":"Comma-separated `key:value` usage-attribution tags (e.g. `tenant:acme,project:demo`, max 8). Recorded on the generation's billing/metrics rows; group spend by any key via GET /v2/analytics/usage?group_by=\u003ckey>. Header-borne twin of the /v3/session URL prefix tags (which win per key when both are present); `opper.`-prefixed keys and `session_id` are reserved. Malformed values return 400.","in":"header","name":"X-Opper-Tags","schema":{"type":"string","description":"Comma-separated `key:value` usage-attribution tags (e.g. `tenant:acme,project:demo`, max 8). Recorded on the generation's billing/metrics rows; group spend by any key via GET /v2/analytics/usage?group_by=\u003ckey>. Header-borne twin of the /v3/session URL prefix tags (which win per key when both are present); `opper.`-prefixed keys and `session_id` are reserved. Malformed values return 400.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"messages":{"items":{"properties":{"content":{"description":"Any value","isRequired":true,"uniqueKey":"messages.items.[INDEX].content","typeLabel":"any"},"role":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].role","typeLabel":"string"},"name":{"type":"string","uniqueKey":"messages.items.[INDEX].name","typeLabel":"string"},"reasoning_content":{"type":"string","uniqueKey":"messages.items.[INDEX].reasoning_content","typeLabel":"string"},"tool_call_id":{"type":"string","uniqueKey":"messages.items.[INDEX].tool_call_id","typeLabel":"string"},"tool_calls":{"items":{"properties":{"function":{"properties":{"arguments":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].function.arguments","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].function.name","typeLabel":"string"}},"required":["name","arguments"],"type":"object","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].function","typeLabel":"object"},"id":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].type","typeLabel":"string"},"custom":{"properties":{"input":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].custom.input","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].custom.name","typeLabel":"string"}},"required":["name","input"],"type":"object","uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].custom","typeLabel":"object"},"extra_content":{"description":"Any value","uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].extra_content","typeLabel":"any"},"thought_signature":{"type":"string","uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX].thought_signature","typeLabel":"string"}},"required":["id","type","function"],"type":"object","uniqueKey":"messages.items.[INDEX].tool_calls.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"messages.items.[INDEX].tool_calls","typeLabel":"object[]"}},"required":["role","content"],"type":"object","uniqueKey":"messages.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"messages","typeLabel":"object[]"},"cache_control":{"description":"Opt in to automatic prompt caching for Anthropic-family models: {\"type\":\"ephemeral\"} (optionally \"ttl\":\"1h\"). Places one moving cache breakpoint on the largest cacheable prefix. Also settable per content part for precise placement. Caching is off unless set; no-op on providers with automatic server-side caching (OpenAI","type":"object","uniqueKey":"cache_control","typeLabel":"object"},"custom_model_credentials":{"properties":{"api_key":{"type":"string","isRequired":true,"uniqueKey":"custom_model_credentials.api_key","typeLabel":"string"},"identifier":{"type":"string","isRequired":true,"uniqueKey":"custom_model_credentials.identifier","typeLabel":"string"},"base_url":{"type":"string","uniqueKey":"custom_model_credentials.base_url","typeLabel":"string"},"extra":{"type":"object","uniqueKey":"custom_model_credentials.extra","typeLabel":"object"},"url":{"type":"string","uniqueKey":"custom_model_credentials.url","typeLabel":"string"}},"required":["identifier","api_key"],"type":"object","uniqueKey":"custom_model_credentials","typeLabel":"object"},"max_completion_tokens":{"type":"integer","uniqueKey":"max_completion_tokens","typeLabel":"integer"},"max_tokens":{"type":"integer","uniqueKey":"max_tokens","typeLabel":"integer"},"metadata":{"type":"object","uniqueKey":"metadata","typeLabel":"object"},"model":{"type":"string","uniqueKey":"model","typeLabel":"string"},"models":{"description":"Fallback models tried in order when the model before them fails for any reason (provider error; rate limit; timeout; a member blocked by one of your rules). Same OpenRouter shape: send the primary in model and the rest here; or omit model and the first entry is the primary. Each entry is any model string: a bare pooled name; a provider/model id; an org alias. Not allowed together with a dynamic/\u003cname> route. At most 10 entries. Which model answered is in meta.routing.served and the X-Opper-Served-Model header; the model field still echoes what you sent.","items":{"type":"string","uniqueKey":"models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"models","typeLabel":"string[]"},"output_schema":{"type":"object","uniqueKey":"output_schema","typeLabel":"object"},"prompt_cache_key":{"description":"OpenAI cache-routing key: a stable name for the prompt prefix this request shares with others (e.g. a document id for a fan-out over one context). Forwarded to OpenAI and used to keep requests that share the key on the same cache replica at providers with per-replica prompt caches.","type":"string","uniqueKey":"prompt_cache_key","typeLabel":"string"},"reasoning_effort":{"type":"string","uniqueKey":"reasoning_effort","typeLabel":"string"},"response_format":{"type":"object","uniqueKey":"response_format","typeLabel":"object"},"service_tier":{"description":"Processing tier. flex: discounted and slower; when the provider has no flex capacity the call fails with 429 instead of running at the full price. priority (alias fast): faster at a premium; falls back to the default tier. ultrafast: fastest; falls back to priority then default. economy: the same model cheaper and slower where a provider sells it under its own model id; it never falls back to the default tier. default and auto: the provider default. A model without an endpoint for the requested tier runs at the default tier. The tier that ran is in the X-Opper-Served-Service-Tier header.","type":"string","uniqueKey":"service_tier","typeLabel":"string"},"stop":{"items":{"type":"string","uniqueKey":"stop.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"stop","typeLabel":"string[]"},"stream":{"type":"boolean","uniqueKey":"stream","typeLabel":"boolean"},"stream_options":{"properties":{"include_usage":{"type":"boolean","uniqueKey":"stream_options.include_usage","typeLabel":"boolean"}},"type":"object","uniqueKey":"stream_options","typeLabel":"object"},"temperature":{"type":"number","uniqueKey":"temperature","typeLabel":"number"},"tool_choice":{"description":"Any value","uniqueKey":"tool_choice","typeLabel":"any"},"tools":{"items":{"properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"tools.items.[INDEX].type","typeLabel":"string"},"aspect_ratio":{"type":"string","uniqueKey":"tools.items.[INDEX].aspect_ratio","typeLabel":"string"},"custom":{"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"tools.items.[INDEX].custom.name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"tools.items.[INDEX].custom.description","typeLabel":"string"},"format":{"type":"object","uniqueKey":"tools.items.[INDEX].custom.format","typeLabel":"object"}},"required":["name"],"type":"object","uniqueKey":"tools.items.[INDEX].custom","typeLabel":"object"},"description":{"type":"string","uniqueKey":"tools.items.[INDEX].description","typeLabel":"string"},"format":{"type":"object","uniqueKey":"tools.items.[INDEX].format","typeLabel":"object"},"function":{"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"tools.items.[INDEX].function.name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"tools.items.[INDEX].function.description","typeLabel":"string"},"parameters":{"type":"object","uniqueKey":"tools.items.[INDEX].function.parameters","typeLabel":"object"},"strict":{"description":"Whether the model must follow parameters exactly. Forwarded to providers that enforce it.","type":"boolean","uniqueKey":"tools.items.[INDEX].function.strict","typeLabel":"boolean"}},"required":["name"],"type":"object","uniqueKey":"tools.items.[INDEX].function","typeLabel":"object"},"model":{"type":"string","uniqueKey":"tools.items.[INDEX].model","typeLabel":"string"},"name":{"type":"string","uniqueKey":"tools.items.[INDEX].name","typeLabel":"string"},"quality":{"type":"string","uniqueKey":"tools.items.[INDEX].quality","typeLabel":"string"},"size":{"type":"string","uniqueKey":"tools.items.[INDEX].size","typeLabel":"string"},"style":{"type":"string","uniqueKey":"tools.items.[INDEX].style","typeLabel":"string"}},"required":["type"],"type":"object","uniqueKey":"tools.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"tools","typeLabel":"object[]"},"top_p":{"type":"number","uniqueKey":"top_p","typeLabel":"number"},"user":{"description":"OpenAI end-user identifier. Hashed and used as the cache replica hint on providers with per-replica prompt caches when neither prompt_cache_key nor an X-Session-Affinity header is sent.","type":"string","uniqueKey":"user","typeLabel":"string"}},"required":["messages"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"messages":[{"content":"\u003cunknown>","role":"\u003cstring>","name":"\u003cstring>","reasoning_content":"\u003cstring>","tool_call_id":"\u003cstring>","tool_calls":[{"function":{"arguments":"\u003cstring>","name":"\u003cstring>"},"id":"\u003cstring>","type":"\u003cstring>","extra_content":"\u003cunknown>","thought_signature":"\u003cstring>"}]}],"cache_control":{},"max_completion_tokens":123,"max_tokens":123,"metadata":{},"model":"\u003cstring>","models":["\u003cstring>"],"output_schema":{},"prompt_cache_key":"\u003cstring>","reasoning_effort":"\u003cstring>","response_format":{},"service_tier":"\u003cstring>","stop":["\u003cstring>"],"stream":true,"stream_options":{"include_usage":true},"temperature":123,"tool_choice":"\u003cunknown>","tools":[{"type":"\u003cstring>","aspect_ratio":"\u003cstring>","description":"\u003cstring>","format":{},"model":"\u003cstring>","name":"\u003cstring>","quality":"\u003cstring>","size":"\u003cstring>","style":"\u003cstring>"}],"top_p":123,"user":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"857670d6-68a2-4703-9921-1c9f43fe85fa":{"content":{"application/json":{"schema":{"properties":{"choices":{"items":{"properties":{"finish_reason":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].finish_reason","typeLabel":"string"},"index":{"type":"integer","isRequired":true,"uniqueKey":"choices.items.[INDEX].index","typeLabel":"integer"},"message":{"properties":{"content":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.content","typeLabel":"string"},"role":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.role","typeLabel":"string"},"annotations":{"items":{"properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX].type","typeLabel":"string"},"url_citation":{"properties":{"url":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX].url_citation.url","typeLabel":"string"},"content":{"type":"string","uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX].url_citation.content","typeLabel":"string"},"end_index":{"type":"integer","uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX].url_citation.end_index","typeLabel":"integer"},"start_index":{"type":"integer","uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX].url_citation.start_index","typeLabel":"integer"},"title":{"type":"string","uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX].url_citation.title","typeLabel":"string"}},"required":["url"],"type":"object","uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX].url_citation","typeLabel":"object"}},"required":["type"],"type":"object","uniqueKey":"choices.items.[INDEX].message.annotations.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"choices.items.[INDEX].message.annotations","typeLabel":"object[]"},"reasoning_content":{"type":"string","uniqueKey":"choices.items.[INDEX].message.reasoning_content","typeLabel":"string"},"tool_calls":{"items":{"properties":{"function":{"properties":{"arguments":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].function.arguments","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].function.name","typeLabel":"string"}},"required":["name","arguments"],"type":"object","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].function","typeLabel":"object"},"id":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","isRequired":true,"uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].type","typeLabel":"string"},"extra_content":{"properties":{"google":{"properties":{"thought_signature":{"type":"string","uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].extra_content.google.thought_signature","typeLabel":"string"}},"type":"object","uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].extra_content.google","typeLabel":"object"}},"type":"object","uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].extra_content","typeLabel":"object"},"thought_signature":{"type":"string","uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX].thought_signature","typeLabel":"string"}},"required":["id","type","function"],"type":"object","uniqueKey":"choices.items.[INDEX].message.tool_calls.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"choices.items.[INDEX].message.tool_calls","typeLabel":"object[]"}},"required":["role","content"],"type":"object","isRequired":true,"uniqueKey":"choices.items.[INDEX].message","typeLabel":"object"}},"required":["index","message","finish_reason"],"type":"object","uniqueKey":"choices.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"choices","typeLabel":"object[]"},"created":{"type":"integer","isRequired":true,"uniqueKey":"created","typeLabel":"integer"},"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"model","typeLabel":"string"},"object":{"type":"string","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"usage":{"properties":{"completion_tokens":{"type":"integer","isRequired":true,"uniqueKey":"usage.completion_tokens","typeLabel":"integer"},"prompt_tokens":{"type":"integer","isRequired":true,"uniqueKey":"usage.prompt_tokens","typeLabel":"integer"},"total_tokens":{"type":"integer","isRequired":true,"uniqueKey":"usage.total_tokens","typeLabel":"integer"},"completion_tokens_details":{"properties":{"reasoning_tokens":{"type":"integer","isRequired":true,"uniqueKey":"usage.completion_tokens_details.reasoning_tokens","typeLabel":"integer"}},"required":["reasoning_tokens"],"type":"object","uniqueKey":"usage.completion_tokens_details","typeLabel":"object"},"prompt_tokens_details":{"properties":{"cache_creation_1h_tokens":{"type":"integer","uniqueKey":"usage.prompt_tokens_details.cache_creation_1h_tokens","typeLabel":"integer"},"cache_creation_tokens":{"type":"integer","uniqueKey":"usage.prompt_tokens_details.cache_creation_tokens","typeLabel":"integer"},"cached_tokens":{"type":"integer","uniqueKey":"usage.prompt_tokens_details.cached_tokens","typeLabel":"integer"}},"type":"object","uniqueKey":"usage.prompt_tokens_details","typeLabel":"object"},"server_tool_use":{"type":"object","uniqueKey":"usage.server_tool_use","typeLabel":"object"},"usage_buckets":{"additionalProperties":{"type":"integer","uniqueKey":"usage.usage_buckets.additionalProperties","typeLabel":"integer"},"type":"object","uniqueKey":"usage.usage_buckets","typeLabel":"object"}},"required":["prompt_tokens","completion_tokens","total_tokens"],"type":"object","isRequired":true,"uniqueKey":"usage","typeLabel":"object"},"cost":{"type":"number","uniqueKey":"cost","typeLabel":"number"},"meta":{"properties":{"guards":{"items":{"properties":{"flagged":{"type":"boolean","isRequired":true,"uniqueKey":"meta.guards.items.[INDEX].flagged","typeLabel":"boolean"},"type":{"type":"string","isRequired":true,"uniqueKey":"meta.guards.items.[INDEX].type","typeLabel":"string"},"code":{"type":"string","uniqueKey":"meta.guards.items.[INDEX].code","typeLabel":"string"},"findings":{"items":{"description":"Any value","uniqueKey":"meta.guards.items.[INDEX].findings.items.[INDEX]","typeLabel":"any"},"type":"array","uniqueKey":"meta.guards.items.[INDEX].findings","typeLabel":"any[]"},"phase":{"type":"string","uniqueKey":"meta.guards.items.[INDEX].phase","typeLabel":"string"},"reason":{"type":"string","uniqueKey":"meta.guards.items.[INDEX].reason","typeLabel":"string"},"rule_id":{"type":"string","uniqueKey":"meta.guards.items.[INDEX].rule_id","typeLabel":"string"},"rule_name":{"type":"string","uniqueKey":"meta.guards.items.[INDEX].rule_name","typeLabel":"string"},"scope_type":{"type":"string","uniqueKey":"meta.guards.items.[INDEX].scope_type","typeLabel":"string"},"status":{"type":"string","uniqueKey":"meta.guards.items.[INDEX].status","typeLabel":"string"}},"required":["type","flagged"],"type":"object","uniqueKey":"meta.guards.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"meta.guards","typeLabel":"object[]"},"trace_uuid":{"type":"string","uniqueKey":"meta.trace_uuid","typeLabel":"string"}},"type":"object","uniqueKey":"meta","typeLabel":"object"}},"required":["id","object","created","model","choices","usage"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"choices":[{"finish_reason":"\u003cstring>","index":123,"message":{"content":"\u003cstring>","role":"\u003cstring>","annotations":[{"type":"\u003cstring>","url_citation":{"url":"\u003cstring>","content":"\u003cstring>","end_index":123,"start_index":123,"title":"\u003cstring>"}}],"reasoning_content":"\u003cstring>","tool_calls":[{"function":{"arguments":"\u003cstring>","name":"\u003cstring>"},"id":"\u003cstring>","type":"\u003cstring>","extra_content":{"google":{"thought_signature":"\u003cstring>"}},"thought_signature":"\u003cstring>"}]}}],"created":123,"id":"\u003cstring>","model":"\u003cstring>","object":"\u003cstring>","usage":{"completion_tokens":123,"prompt_tokens":123,"total_tokens":123,"completion_tokens_details":{"reasoning_tokens":123},"prompt_tokens_details":{"cache_creation_1h_tokens":123,"cache_creation_tokens":123,"cached_tokens":123},"server_tool_use":{},"usage_buckets":{}},"cost":123,"meta":{"guards":[{"flagged":true,"type":"\u003cstring>","code":"\u003cstring>","findings":["\u003cunknown>"],"phase":"\u003cstring>","reason":"\u003cstring>","rule_id":"\u003cstring>","rule_name":"\u003cstring>","scope_type":"\u003cstring>","status":"\u003cstring>"}],"trace_uuid":"\u003cstring>"}}}},"exampleType":"generated"},"text/event-stream":{"schema":{"description":"Server-Sent Events stream. Each event is `data: \u003cjson>` (a `chat.completion.chunk` object). The stream terminates with `data: [DONE]`. When `stream_options.include_usage` is true, the final chunk before `[DONE]` carries `usage` and an Opper `cost` extension.","type":"string","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"\u003cstring>"}},"exampleType":"generated"}},"description":"Successful response","headers":{"X-Opper-Cost":{"description":"Execution cost of the request as a floating-point number.","schema":{"format":"double","type":"number"}}},"exampleType":"generated"},"3b7671e4-82ab-4b41-bcdd-9364d8b7bdc3":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Any value","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","uniqueKey":"meta","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":"\u003cunknown>"},"meta":{}}}},"exampleType":"generated"}},"description":"Bad request","exampleType":"generated"},"023fc000-8a51-411f-b08c-73db10b7ea68":{"description":"Unauthorized - missing or invalid API key","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"8aa044f5-407d-4ab2-8fe9-71cc0bd2b96d":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Any value","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","uniqueKey":"meta","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":"\u003cunknown>"},"meta":{}}}},"exampleType":"generated"}},"description":"Internal server error","exampleType":"generated"}},"security":{"5865a3c7-1a9d-4964-80f4-c65785131374":{"BearerAuth":{"bearerFormat":"API Key","description":"API key authentication. Pass your API key as a Bearer token.","scheme":"bearer","type":"http","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"c2b11331-7fab-45b2-bf5b-f9b364dfc679":{"description":"Production","url":"https://api.opper.ai"},"7c93fdae-cb5e-47b9-ac9b-8536ea6166cd":{"description":"Local development","url":"http://localhost:8080"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"bearerFormat":"API Key","description":"API key authentication. Pass your API key as a Bearer token.","scheme":"bearer","type":"http","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key authentication. Pass your API key as a Bearer token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"openapi-v3.json"},"subdomain":"opper","siteName":"Opper","title":"Chat Completions - Opper","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-08T13:52:54.271Z","gitLastModified":"2026-06-08T13:52:28.000Z","originalFileLocation":"v3-api-reference/compatibility/chat-completions.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Opper\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Chat Completions - Opper\">\u003cmeta data-mint-head property=\"og:description\" content=\"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Opper\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://opper.mintlify.app/_mintlify/api/og/v2?division=OpenAI\u0026amp;title=Chat+Completions\u0026amp;description=OpenAI-compatible+chat+completions+endpoint.+Supports+streaming+via+the+stream+parameter.\u0026amp;theme=2bfe23844db8025c327f2519\u0026amp;signature=1156ca8a5eeba242fc51144cc44fcb463eb7877ea9f9895aab8fa833a2441676\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Chat Completions - Opper\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://opper.mintlify.app/_mintlify/api/og/v2?division=OpenAI\u0026amp;title=Chat+Completions\u0026amp;description=OpenAI-compatible+chat+completions+endpoint.+Supports+streaming+via+the+stream+parameter.\u0026amp;theme=2bfe23844db8025c327f2519\u0026amp;signature=1156ca8a5eeba242fc51144cc44fcb463eb7877ea9f9895aab8fa833a2441676\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Opper\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#14cdcd\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v3-api-reference/compatibility/chat-completions.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.opper.ai/#organization\",\"name\":\"Opper\",\"url\":\"https://docs.opper.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/logo/light.svg?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=fd4170c482c6cebc3c20d8f7f7e033f8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.opper.ai#website\",\"name\":\"Opper\",\"url\":\"https://docs.opper.ai\",\"publisher\":{\"@id\":\"https://docs.opper.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions#webpage\",\"url\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions\",\"name\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.\",\"dateModified\":\"2026-06-08T13:52:28.000Z\",\"isPartOf\":{\"@id\":\"https://docs.opper.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Opper\",\"item\":\"https://docs.opper.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chat Completions\",\"item\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions#apireference\",\"headline\":\"Chat Completions\",\"name\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter.\",\"url\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions\",\"mainEntityOfPage\":{\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions#webpage\"},\"dateModified\":\"2026-06-08T13:52:28.000Z\",\"publisher\":{\"@id\":\"https://docs.opper.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.opper.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Opper\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Opper","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/overview/about"}]},{"tab":"Cookbook","icon":"github","href":"https://github.com/opper-ai/opper-cookbook"},{"tab":"API Reference","icon":"square-terminal","groups":[{"group":"Compatibility","pages":[{"group":"OpenAI","expanded":true,"pages":[{"title":"Chat Completions","openapi":"post /v3/compat/chat/completions","href":"/v3-api-reference/compatibility/chat-completions"},{"title":"Responses","openapi":"post /v3/compat/responses","description":"OpenAI Responses API compatible endpoint. Supports streaming via the stream parameter.","href":"/v3-api-reference/compatibility/create-response"},{"title":"Embeddings","openapi":"post /v3/compat/embeddings","href":"/v3-api-reference/compatibility/create-embeddings"},{"title":"Decisions","openapi":"post /v3/compat/decisions","href":"/v3-api-reference/compatibility/create-decision"},{"title":"List Models","openapi":"get /v3/compat/models","href":"/v3-api-reference/compatibility/list-models"}]},{"group":"Anthropic","expanded":true,"pages":[{"title":"Messages","openapi":"post /v3/compat/v1/messages","href":"/v3-api-reference/compatibility/create-message"},{"title":"Count Tokens","openapi":"post /v3/compat/v1/messages/count_tokens","href":"/v3-api-reference/compatibility/count-message-tokens"}]},{"group":"Google","expanded":true,"pages":[{"title":"Interactions","openapi":"post /v3/compat/v1beta/interactions","href":"/v3-api-reference/compatibility/create-interaction"},{"title":"Generate Content","openapi":"post /v3/compat/v1beta/models/{model}:generateContent","href":"/v3-api-reference/compatibility/generate-content"},{"title":"Stream Generate Content","openapi":"post /v3/compat/v1beta/models/{model}:streamGenerateContent","href":"/v3-api-reference/compatibility/stream-generate-content"},{"title":"Count Tokens","openapi":"post /v3/compat/v1beta/models/{model}:countTokens","href":"/v3-api-reference/compatibility/count-tokens"}]},{"group":"TypeSafe","expanded":true,"pages":[{"title":"System One evaluation","openapi":"post /v3/compat/v1/systemone","href":"/v3-api-reference/compatibility/systemone"}]},{"group":"Other","expanded":true,"pages":[{"title":"OpenResponses","openapi":"post /v3/compat/openresponses","href":"/v3-api-reference/compatibility/openresponses"}]}]},{"group":"Multimodality","pages":[{"group":"Images","pages":[{"title":"Generate an image","openapi":"post /v3/images","href":"/v3-api-reference/images/create-image"},{"title":"List image models","openapi":"get /v3/images/models","href":"/v3-api-reference/images/list-image-models"}]},{"group":"Audio","pages":[{"title":"Generate speech","openapi":"post /v3/audio/speech","href":"/v3-api-reference/audio/create-speech"},{"title":"Transcribe audio","openapi":"post /v3/audio/transcriptions","href":"/v3-api-reference/audio/create-transcription"},{"title":"Generate audio","openapi":"post /v3/audio/generations","href":"/v3-api-reference/audio/create-audio-generation"},{"title":"List audio models","openapi":"get /v3/audio/models","href":"/v3-api-reference/audio/list-audio-models"},{"title":"Create Voice","openapi":"post /v3/audio/voices","href":"/v3-api-reference/audio/create-voice"},{"title":"List Voices","openapi":"get /v3/audio/voices","href":"/v3-api-reference/audio/list-voices"},{"title":"Get Voice","openapi":"get /v3/audio/voices/{id}","href":"/v3-api-reference/audio/get-voice"},{"title":"Delete Voice","openapi":"delete /v3/audio/voices/{id}","href":"/v3-api-reference/audio/delete-voice"}]},{"group":"Video","pages":[{"title":"Generate a video","openapi":"post /v3/videos","href":"/v3-api-reference/video/create-video"},{"title":"List video models","openapi":"get /v3/videos/models","href":"/v3-api-reference/video/list-video-models"}]},{"group":"Webhooks","pages":[{"title":"Get the webhook signing secret","openapi":"get /v3/webhooks/secret","href":"/v3-api-reference/webhooks/get-webhook-secret"},{"title":"Rotate the webhook signing secret","openapi":"post /v3/webhooks/secret/rotate","href":"/v3-api-reference/webhooks/rotate-webhook-secret"},{"title":"Get the webhook settings","openapi":"get /v3/webhooks/settings","href":"/v3-api-reference/webhooks/get-webhook-settings"},{"title":"Update the webhook settings","openapi":"patch /v3/webhooks/settings","href":"/v3-api-reference/webhooks/update-webhook-settings"},{"title":"Send a test webhook","openapi":"post /v3/webhooks/test","href":"/v3-api-reference/webhooks/test-webhook"}]},{"group":"Rerank","pages":[{"title":"Rerank documents","openapi":"post /v3/rerank","href":"/v3-api-reference/rerank/rerank-documents"}]},{"group":"OCR","pages":[{"title":"Extract text (OCR)","openapi":"post /v3/ocr","href":"/v3-api-reference/ocr/extract-text"},{"title":"List OCR models","openapi":"get /v3/ocr/models","href":"/v3-api-reference/ocr/list-ocr-models"}]}]},{"group":"Files","pages":[{"title":"Upload a file","openapi":"post /v3/files","href":"/v3-api-reference/files/upload-file"},{"title":"List files","openapi":"get /v3/files","href":"/v3-api-reference/files/list-files"},{"title":"Get file metadata","openapi":"get /v3/files/{id}","href":"/v3-api-reference/files/get-file"},{"title":"Get a file download URL","openapi":"get /v3/files/{id}/content","href":"/v3-api-reference/files/get-file-content"},{"title":"Set or clear a file's expiry","openapi":"patch /v3/files/{id}","href":"/v3-api-reference/files/update-file"},{"title":"Delete a file","openapi":"delete /v3/files/{id}","href":"/v3-api-reference/files/delete-file"}]},{"group":"Realtime","pages":[{"title":"Realtime protocol","href":"/v3-api-reference/realtime/protocol"},{"title":"Mint realtime ticket","href":"/v3-api-reference/realtime/create-realtime-session"}]},{"group":"Roundtable","pages":[{"openapi":"post /v3/roundtable","title":"Roundtable","href":"/v3-api-reference/roundtable/create-roundtable"}]},{"group":"Platform APIs","pages":[{"group":"Generations","pages":[{"openapi":"get /v3/generations","title":"List generations","href":"/v3-api-reference/generations/list-generations"},{"openapi":"get /v3/generations/{id}","title":"Get generation","href":"/v3-api-reference/generations/get-generation"},{"openapi":"delete /v3/generations/{id}","title":"Delete generation","href":"/v3-api-reference/generations/delete-generation"}]},{"group":"Management","pages":[{"openapi":"get /management/v1/projects","title":"List projects","href":"/v3-api-reference/management/list-projects"},{"openapi":"post /management/v1/projects","title":"Create a project","href":"/v3-api-reference/management/create-project"},{"openapi":"get /management/v1/projects/{uuid}","title":"Get a project","href":"/v3-api-reference/management/get-project"},{"openapi":"patch /management/v1/projects/{uuid}","title":"Update a project","href":"/v3-api-reference/management/update-project"},{"openapi":"delete /management/v1/projects/{uuid}","title":"Delete a project","href":"/v3-api-reference/management/delete-project"},{"openapi":"get /management/v1/projects/{uuid}/api-keys","title":"List a project's API keys","href":"/v3-api-reference/management/list-api-keys"},{"openapi":"post /management/v1/projects/{uuid}/api-keys","title":"Mint an API key","href":"/v3-api-reference/management/create-api-key"},{"openapi":"delete /management/v1/projects/{uuid}/api-keys/{id}","title":"Delete an API key","href":"/v3-api-reference/management/delete-api-key"},{"openapi":"get /management/v1/projects/{uuid}/webhook","title":"Get a project's webhook","href":"/v3-api-reference/management/get-project-webhook"},{"openapi":"patch /management/v1/projects/{uuid}/webhook","title":"Set or clear a project's webhook URL","href":"/v3-api-reference/management/update-project-webhook"},{"openapi":"get /management/v1/projects/{uuid}/webhook/secret","title":"Get a project's webhook signing secret","href":"/v3-api-reference/management/get-project-webhook-secret"},{"openapi":"post /management/v1/projects/{uuid}/webhook/secret/rotate","title":"Rotate a project's webhook signing secret","href":"/v3-api-reference/management/rotate-project-webhook-secret"},{"openapi":"post /management/v1/projects/{uuid}/webhook/test","title":"Send a test webhook for a project","href":"/v3-api-reference/management/test-project-webhook"},{"openapi":"get /management/v1/members","title":"List members","href":"/v3-api-reference/management/list-members"},{"openapi":"delete /management/v1/members/{user_uuid}","title":"Remove a member","href":"/v3-api-reference/management/remove-member"},{"openapi":"get /management/v1/invites","title":"List invitations","href":"/v3-api-reference/management/list-invites"},{"openapi":"post /management/v1/invites","title":"Invite a member","href":"/v3-api-reference/management/create-invite"},{"openapi":"delete /management/v1/invites/{id}","title":"Revoke an invitation","href":"/v3-api-reference/management/revoke-invite"},{"openapi":"get /management/v1/dynamic-routes","title":"List dynamic routes","href":"/v3-api-reference/management/list-dynamic-routes"},{"openapi":"post /management/v1/dynamic-routes","title":"Create a dynamic route","href":"/v3-api-reference/management/create-dynamic-route"},{"openapi":"get /management/v1/dynamic-routes/{name}","title":"Get a dynamic route","href":"/v3-api-reference/management/get-dynamic-route"},{"openapi":"put /management/v1/dynamic-routes/{name}/draft","title":"Replace the draft","href":"/v3-api-reference/management/update-dynamic-route-draft"},{"openapi":"post /management/v1/dynamic-routes/{name}/deploy","title":"Deploy the draft","href":"/v3-api-reference/management/deploy-dynamic-route"},{"openapi":"post /management/v1/dynamic-routes/{name}/simulate","title":"Simulate a request through the route","href":"/v3-api-reference/management/simulate-dynamic-route"},{"openapi":"get /management/v1/dynamic-routes/{name}/versions","title":"List a route's versions","href":"/v3-api-reference/management/list-dynamic-route-versions"},{"openapi":"get /management/v1/dynamic-routes/{name}/versions/{version_number}","title":"Get a version","href":"/v3-api-reference/management/get-dynamic-route-version"},{"openapi":"post /management/v1/dynamic-routes/{name}/versions/{version_number}/rollback","title":"Roll back to a version","href":"/v3-api-reference/management/rollback-dynamic-route"},{"openapi":"post /management/v1/dynamic-routes/{name}/versions/{version_number}/restore-to-draft","title":"Copy a version into the draft","href":"/v3-api-reference/management/restore-dynamic-route-version-to-draft"},{"openapi":"delete /management/v1/dynamic-routes/{name}","title":"Delete a dynamic route","href":"/v3-api-reference/management/delete-dynamic-route"},{"openapi":"get /management/v1/controls/rules","title":"List control rules","href":"/v3-api-reference/management/list-control-rules"},{"openapi":"post /management/v1/controls/rules","title":"Create a control rule","href":"/v3-api-reference/management/create-control-rule"},{"openapi":"patch /management/v1/controls/rules/{uuid}","title":"Update a control rule","href":"/v3-api-reference/management/update-control-rule"},{"openapi":"delete /management/v1/controls/rules/{uuid}","title":"Delete a control rule","href":"/v3-api-reference/management/delete-control-rule"},{"openapi":"get /management/v1/usage","title":"Get usage and cost","href":"/v3-api-reference/management/get-usage"},{"openapi":"post /management/v1/management-keys/_self/disable","title":"Disable the calling management key","href":"/v3-api-reference/management/disable-management-key"}]},{"group":"Models","pages":[{"openapi":"get /v3/models","title":"List models","href":"/v3-api-reference/models/list-models"}]},{"group":"Spans","pages":[{"openapi":"post /v3/spans","title":"Create span","href":"/v3-api-reference/spans/create-span"},{"openapi":"patch /v3/spans/{id}","title":"Update span","href":"/v3-api-reference/spans/update-span"}]},{"group":"Tools","pages":[{"openapi":"post /v3/tools/web/fetch","title":"Web fetch","href":"/v3-api-reference/tools/web-fetch"},{"openapi":"post /v3/tools/web/search","title":"Web search","href":"/v3-api-reference/tools/web-search"}]},{"group":"System","pages":[{"openapi":"get /health","title":"Health check","href":"/v3-api-reference/system/health-check"},{"openapi":"get /v3/openapi.json","title":"OpenAPI spec (JSON)","href":"/v3-api-reference/system/openapi-spec-json"},{"openapi":"get /v3/openapi.yaml","title":"OpenAPI spec (YAML)","href":"/v3-api-reference/system/openapi-spec-yaml"}]}]}]}]},"basePath":"","title":"Chat Completions - Opper","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}