Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling models.generate_content(). The request body is the Gemini GenerateContentRequest shape (camelCase contents / systemInstruction / generationConfig); the response is candidates[].content.parts[] + usageMetadata. The {model} path segment resolves as on the other compat endpoints: a bare model name (e.g. gemini-2.5-flash) routes over that model’s pool, and an Opper-canonical id (e.g. vertexai/gemini-2.5-flash) pins that endpoint.
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.
Model id — a bare model name (e.g. gemini-2.5-flash), which routes over that model's pool (Gemini API and Vertex endpoints the project's allowlist permits) and falls over between them, or an Opper-canonical id (e.g. vertexai/gemini-2.5-flash), which pins that endpoint.
Opt in to automatic prompt caching for Anthropic-family models routed through this Gemini-shape endpoint: {"type":"ephemeral"} (optionally "ttl":"1h"). Places one moving cache breakpoint on the largest cacheable prefix. Caching is off unless set; no-op on Gemini and other providers with automatic server-side caching. Cache writes cost 1.25x input and reads 0.1x
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 (or agent) and the rest here; or omit both 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 the X-Opper-Served-Model header.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Opper","description":"The European AI gateway for agents: 700+ models from 50+ 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":"6ae206e5ba4b20fd94ede38a","collectionId":"14ea1155-74d9-4707-9cf8-810ca5b34c9b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae206e5ba4b20fd94ede38a"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae206e5ba4b20fd94ede38a","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Documentation","count":88},{"language":"default","tag":"API Reference","count":78},{"language":"default","tag":"Platform APIs","count":41},{"language":"default","tag":"Management","count":30},{"language":"default","tag":"Apps","count":29},{"language":"default","tag":"Build","count":26},{"language":"default","tag":"Multimodality","count":22},{"language":"default","tag":"Observe \u0026 Control","count":15},{"language":"default","tag":"Gateway","count":14},{"language":"default","tag":"Compatibility","count":13}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"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/generate-content","slug":"/v3-api-reference/compatibility/generate-content","pageMetadata":{"title":"Generate Content","openapi":"post /v3/compat/v1beta/models/{model}:generateContent","description":"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling `models.generate_content()`. The request body is the Gemini `GenerateContentRequest` shape (camelCase `contents` / `systemInstruction` / `generationConfig`); the response is `candidates[].content.parts[]` + `usageMetadata`. The `{model}` path segment resolves as on the other compat endpoints: a bare model name (e.g. `gemini-2.5-flash`) routes over that model's pool, and an Opper-canonical id (e.g. `vertexai/gemini-2.5-flash`) pins that endpoint.","href":"/v3-api-reference/compatibility/generate-content"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling \", _jsx(_components.code, {\n children: \"models.generate_content()\"\n }), \". The request body is the Gemini \", _jsx(_components.code, {\n children: \"GenerateContentRequest\"\n }), \" shape (camelCase \", _jsx(_components.code, {\n children: \"contents\"\n }), \" / \", _jsx(_components.code, {\n children: \"systemInstruction\"\n }), \" / \", _jsx(_components.code, {\n children: \"generationConfig\"\n }), \"); the response is \", _jsx(_components.code, {\n children: \"candidates[].content.parts[]\"\n }), \" + \", _jsx(_components.code, {\n children: \"usageMetadata\"\n }), \". The \", _jsx(_components.code, {\n children: \"{model}\"\n }), \" path segment resolves as on the other compat endpoints: a bare model name (e.g. \", _jsx(_components.code, {\n children: \"gemini-2.5-flash\"\n }), \") routes over that model’s pool, and an Opper-canonical id (e.g. \", _jsx(_components.code, {\n children: \"vertexai/gemini-2.5-flash\"\n }), \") pins that endpoint.\"]\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":"Generate Content","openapi":"post /v3/compat/v1beta/models/{model}:generateContent","description":"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling `models.generate_content()`. The request body is the Gemini `GenerateContentRequest` shape (camelCase `contents` / `systemInstruction` / `generationConfig`); the response is `candidates[].content.parts[]` + `usageMetadata`. The `{model}` path segment resolves as on the other compat endpoints: a bare model name (e.g. `gemini-2.5-flash`) routes over that model's pool, and an Opper-canonical id (e.g. `vertexai/gemini-2.5-flash`) pins that endpoint.","href":"/v3-api-reference/compatibility/generate-content"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/opper/40a2b9bd0ec03258/script.js"],"openApiReferenceData":{"operation":{"description":"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling `models.generate_content()`. The request body is the Gemini `GenerateContentRequest` shape (camelCase `contents` / `systemInstruction` / `generationConfig`); the response is `candidates[].content.parts[]` + `usageMetadata`. The `{model}` path segment resolves as on the other compat endpoints: a bare model name (e.g. `gemini-2.5-flash`) routes over that model's pool, and an Opper-canonical id (e.g. `vertexai/gemini-2.5-flash`) pins that endpoint.","operationId":"generateContent","parameters":["e5474ae8-0951-482b-946e-81126f84a4c0","2cc76e40-fabf-40c2-bb94-31cc411ea48c","e7d07cd3-f764-40b8-baca-406f5680922e","110c86e8-f6fa-4317-9b7f-fb01e3b9ab83"],"requestBody":"f093474e-30df-4d64-88d3-b6fbbf4944a9","responses":{"200":"f4c5617f-e2eb-47e8-8ee6-eb779e82fdc4","400":"b1c49581-d134-4f21-a835-854caf4c3a4d","401":"3c81356b-83b4-411d-8b48-e4bc83bec12b","500":"fbc70347-d234-468d-a2bd-ef930590907d"},"summary":"Generate Content API","tags":["Compatibility"],"method":"post","type":"path","servers":["500d676c-94ea-4606-840a-c45e859b6131","6c6ab079-b5b0-4735-8565-89cb61f02023"],"security":["f5ae6308-2807-4f40-b3ba-d1fd4a20c4b8"],"path":"/v3/compat/v1beta/models/{model}:generateContent","baseUrlOptions":["https://api.opper.ai","http://localhost:8080"],"title":"Generate Content API","codeSamples":[],"requestExampleLanguages":["bash","python","typescript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"e5474ae8-0951-482b-946e-81126f84a4c0":{"description":"Model id — a bare model name (e.g. `gemini-2.5-flash`), which routes over that model's pool (Gemini API and Vertex endpoints the project's allowlist permits) and falls over between them, or an Opper-canonical id (e.g. `vertexai/gemini-2.5-flash`), which pins that endpoint.","in":"path","name":"model","required":true,"schema":{"type":"string","isRequired":true,"description":"Model id — a bare model name (e.g. `gemini-2.5-flash`), which routes over that model's pool (Gemini API and Vertex endpoints the project's allowlist permits) and falls over between them, or an Opper-canonical id (e.g. `vertexai/gemini-2.5-flash`), which pins that endpoint.","uniqueKey":"","typeLabel":"string"}},"2cc76e40-fabf-40c2-bb94-31cc411ea48c":{"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"}},"e7d07cd3-f764-40b8-baca-406f5680922e":{"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>"}},"110c86e8-f6fa-4317-9b7f-fb01e3b9ab83":{"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":{"contents":{"description":"Any value","isRequired":true,"uniqueKey":"contents","typeLabel":"any"},"input":{"description":"Any value","isRequired":true,"uniqueKey":"input","typeLabel":"any"},"agent":{"type":"string","uniqueKey":"agent","typeLabel":"string"},"background":{"type":"boolean","uniqueKey":"background","typeLabel":"boolean"},"cache_control":{"description":"Opt in to automatic prompt caching for Anthropic-family models routed through this Gemini-shape endpoint: {\"type\":\"ephemeral\"} (optionally \"ttl\":\"1h\"). Places one moving cache breakpoint on the largest cacheable prefix. Caching is off unless set; no-op on Gemini and other providers with automatic server-side caching. Cache writes cost 1.25x input and reads 0.1x","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"},"generation_config":{"properties":{"max_output_tokens":{"type":"integer","uniqueKey":"generation_config.max_output_tokens","typeLabel":"integer"},"response_json_schema":{"type":"object","uniqueKey":"generation_config.response_json_schema","typeLabel":"object"},"response_mime_type":{"type":"string","uniqueKey":"generation_config.response_mime_type","typeLabel":"string"},"response_schema":{"type":"object","uniqueKey":"generation_config.response_schema","typeLabel":"object"},"seed":{"type":"integer","uniqueKey":"generation_config.seed","typeLabel":"integer"},"stop_sequences":{"items":{"type":"string","uniqueKey":"generation_config.stop_sequences.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"generation_config.stop_sequences","typeLabel":"string[]"},"temperature":{"type":"number","uniqueKey":"generation_config.temperature","typeLabel":"number"},"thinking_config":{"properties":{"include_thoughts":{"type":"boolean","uniqueKey":"generation_config.thinking_config.include_thoughts","typeLabel":"boolean"},"thinking_budget":{"type":"integer","uniqueKey":"generation_config.thinking_config.thinking_budget","typeLabel":"integer"},"thinking_level":{"type":"string","uniqueKey":"generation_config.thinking_config.thinking_level","typeLabel":"string"}},"type":"object","uniqueKey":"generation_config.thinking_config","typeLabel":"object"},"thinking_level":{"type":"string","uniqueKey":"generation_config.thinking_level","typeLabel":"string"},"thinking_summaries":{"type":"string","uniqueKey":"generation_config.thinking_summaries","typeLabel":"string"},"tool_choice":{"description":"Any value","uniqueKey":"generation_config.tool_choice","typeLabel":"any"},"top_k":{"type":"integer","uniqueKey":"generation_config.top_k","typeLabel":"integer"},"top_p":{"type":"number","uniqueKey":"generation_config.top_p","typeLabel":"number"}},"type":"object","uniqueKey":"generation_config","typeLabel":"object"},"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 (or agent) and the rest here; or omit both 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 the X-Opper-Served-Model header.","items":{"type":"string","uniqueKey":"models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"models","typeLabel":"string[]"},"previous_interaction_id":{"type":"string","uniqueKey":"previous_interaction_id","typeLabel":"string"},"response_format":{"type":"object","uniqueKey":"response_format","typeLabel":"object"},"response_mime_type":{"type":"string","uniqueKey":"response_mime_type","typeLabel":"string"},"safety_settings":{"items":{"properties":{"category":{"type":"string","uniqueKey":"safety_settings.items.[INDEX].category","typeLabel":"string"},"threshold":{"type":"string","uniqueKey":"safety_settings.items.[INDEX].threshold","typeLabel":"string"}},"type":"object","uniqueKey":"safety_settings.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"safety_settings","typeLabel":"object[]"},"store":{"type":"boolean","uniqueKey":"store","typeLabel":"boolean"},"stream":{"type":"boolean","uniqueKey":"stream","typeLabel":"boolean"},"system_instruction":{"properties":{"Text":{"type":"string","isRequired":true,"uniqueKey":"system_instruction.Text","typeLabel":"string"}},"required":["Text"],"type":"object","uniqueKey":"system_instruction","typeLabel":"object"},"tool_config":{"properties":{"function_calling_config":{"properties":{"allowed_function_names":{"items":{"type":"string","uniqueKey":"tool_config.function_calling_config.allowed_function_names.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"tool_config.function_calling_config.allowed_function_names","typeLabel":"string[]"},"mode":{"type":"string","uniqueKey":"tool_config.function_calling_config.mode","typeLabel":"string"}},"type":"object","uniqueKey":"tool_config.function_calling_config","typeLabel":"object"}},"type":"object","uniqueKey":"tool_config","typeLabel":"object"},"tools":{"items":{"properties":{"codeExecution":{"description":"Any value","uniqueKey":"tools.items.[INDEX].codeExecution","typeLabel":"any"},"code_execution":{"description":"Any value","uniqueKey":"tools.items.[INDEX].code_execution","typeLabel":"any"},"description":{"type":"string","uniqueKey":"tools.items.[INDEX].description","typeLabel":"string"},"function_declarations":{"items":{"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"tools.items.[INDEX].function_declarations.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"tools.items.[INDEX].function_declarations.items.[INDEX].description","typeLabel":"string"},"parameters":{"type":"object","uniqueKey":"tools.items.[INDEX].function_declarations.items.[INDEX].parameters","typeLabel":"object"},"parameters_json_schema":{"description":"Any value","uniqueKey":"tools.items.[INDEX].function_declarations.items.[INDEX].parameters_json_schema","typeLabel":"any"}},"required":["name"],"type":"object","uniqueKey":"tools.items.[INDEX].function_declarations.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"tools.items.[INDEX].function_declarations","typeLabel":"object[]"},"googleSearch":{"description":"Any value","uniqueKey":"tools.items.[INDEX].googleSearch","typeLabel":"any"},"googleSearchRetrieval":{"description":"Any value","uniqueKey":"tools.items.[INDEX].googleSearchRetrieval","typeLabel":"any"},"google_search":{"description":"Any value","uniqueKey":"tools.items.[INDEX].google_search","typeLabel":"any"},"google_search_retrieval":{"description":"Any value","uniqueKey":"tools.items.[INDEX].google_search_retrieval","typeLabel":"any"},"name":{"type":"string","uniqueKey":"tools.items.[INDEX].name","typeLabel":"string"},"parameters":{"type":"object","uniqueKey":"tools.items.[INDEX].parameters","typeLabel":"object"},"type":{"type":"string","uniqueKey":"tools.items.[INDEX].type","typeLabel":"string"},"urlContext":{"description":"Any value","uniqueKey":"tools.items.[INDEX].urlContext","typeLabel":"any"},"url_context":{"description":"Any value","uniqueKey":"tools.items.[INDEX].url_context","typeLabel":"any"}},"type":"object","uniqueKey":"tools.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"tools","typeLabel":"object[]"}},"required":["input","contents"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"contents":"\u003cunknown>","input":"\u003cunknown>","agent":"\u003cstring>","background":true,"cache_control":{},"generation_config":{"max_output_tokens":123,"response_json_schema":{},"response_mime_type":"\u003cstring>","response_schema":{},"seed":123,"stop_sequences":["\u003cstring>"],"temperature":123,"thinking_config":{"include_thoughts":true,"thinking_budget":123,"thinking_level":"\u003cstring>"},"thinking_level":"\u003cstring>","thinking_summaries":"\u003cstring>","tool_choice":"\u003cunknown>","top_k":123,"top_p":123},"metadata":{},"model":"\u003cstring>","models":["\u003cstring>"],"previous_interaction_id":"\u003cstring>","response_format":{},"response_mime_type":"\u003cstring>","safety_settings":[{"category":"\u003cstring>","threshold":"\u003cstring>"}],"store":true,"stream":true,"tool_config":{"function_calling_config":{"allowed_function_names":["\u003cstring>"],"mode":"\u003cstring>"}},"tools":[{"codeExecution":"\u003cunknown>","code_execution":"\u003cunknown>","description":"\u003cstring>","function_declarations":[{"name":"\u003cstring>","description":"\u003cstring>","parameters":{},"parameters_json_schema":"\u003cunknown>"}],"googleSearch":"\u003cunknown>","googleSearchRetrieval":"\u003cunknown>","google_search":"\u003cunknown>","google_search_retrieval":"\u003cunknown>","name":"\u003cstring>","parameters":{},"type":"\u003cstring>","urlContext":"\u003cunknown>","url_context":"\u003cunknown>"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"f4c5617f-e2eb-47e8-8ee6-eb779e82fdc4":{"content":{"application/json":{"schema":{"properties":{"candidates":{"items":{"properties":{"content":{"properties":{"parts":{"items":{"properties":{"codeExecutionResult":{"type":"object","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX].codeExecutionResult","typeLabel":"object"},"executableCode":{"type":"object","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX].executableCode","typeLabel":"object"},"functionCall":{"type":"object","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX].functionCall","typeLabel":"object"},"inlineData":{"type":"object","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX].inlineData","typeLabel":"object"},"text":{"type":"string","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX].text","typeLabel":"string"},"thought":{"type":"boolean","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX].thought","typeLabel":"boolean"},"thoughtSignature":{"type":"string","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX].thoughtSignature","typeLabel":"string"}},"type":"object","uniqueKey":"candidates.items.[INDEX].content.parts.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"candidates.items.[INDEX].content.parts","typeLabel":"object[]"},"role":{"type":"string","uniqueKey":"candidates.items.[INDEX].content.role","typeLabel":"string"}},"required":["parts"],"type":"object","isRequired":true,"uniqueKey":"candidates.items.[INDEX].content","typeLabel":"object"},"index":{"type":"integer","isRequired":true,"uniqueKey":"candidates.items.[INDEX].index","typeLabel":"integer"},"finishReason":{"type":"string","uniqueKey":"candidates.items.[INDEX].finishReason","typeLabel":"string"},"groundingMetadata":{"type":"object","uniqueKey":"candidates.items.[INDEX].groundingMetadata","typeLabel":"object"},"urlContextMetadata":{"type":"object","uniqueKey":"candidates.items.[INDEX].urlContextMetadata","typeLabel":"object"}},"required":["content","index"],"type":"object","uniqueKey":"candidates.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"candidates","typeLabel":"object[]"},"modelVersion":{"type":"string","uniqueKey":"modelVersion","typeLabel":"string"},"responseId":{"type":"string","uniqueKey":"responseId","typeLabel":"string"},"usageMetadata":{"properties":{"cachedContentTokenCount":{"type":"integer","uniqueKey":"usageMetadata.cachedContentTokenCount","typeLabel":"integer"},"candidatesTokenCount":{"type":"integer","uniqueKey":"usageMetadata.candidatesTokenCount","typeLabel":"integer"},"opper":{"type":"object","uniqueKey":"usageMetadata.opper","typeLabel":"object"},"promptTokenCount":{"type":"integer","uniqueKey":"usageMetadata.promptTokenCount","typeLabel":"integer"},"thoughtsTokenCount":{"type":"integer","uniqueKey":"usageMetadata.thoughtsTokenCount","typeLabel":"integer"},"totalTokenCount":{"type":"integer","uniqueKey":"usageMetadata.totalTokenCount","typeLabel":"integer"}},"type":"object","uniqueKey":"usageMetadata","typeLabel":"object"}},"required":["candidates"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"candidates":[{"content":{"parts":[{"codeExecutionResult":{},"executableCode":{},"functionCall":{},"inlineData":{},"text":"\u003cstring>","thought":true,"thoughtSignature":"\u003cstring>"}],"role":"\u003cstring>"},"index":123,"finishReason":"\u003cstring>","groundingMetadata":{},"urlContextMetadata":{}}],"modelVersion":"\u003cstring>","responseId":"\u003cstring>","usageMetadata":{"cachedContentTokenCount":123,"candidatesTokenCount":123,"opper":{},"promptTokenCount":123,"thoughtsTokenCount":123,"totalTokenCount":123}}}},"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"},"b1c49581-d134-4f21-a835-854caf4c3a4d":{"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"},"3c81356b-83b4-411d-8b48-e4bc83bec12b":{"description":"Unauthorized - missing or invalid API key","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"fbc70347-d234-468d-a2bd-ef930590907d":{"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":{"f5ae6308-2807-4f40-b3ba-d1fd4a20c4b8":{"BearerAuth":{"bearerFormat":"API Key","description":"API key authentication. Pass your API key as a Bearer token.","scheme":"bearer","type":"http","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"500d676c-94ea-4606-840a-c45e859b6131":{"description":"Production","url":"https://api.opper.ai"},"6c6ab079-b5b0-4735-8565-89cb61f02023":{"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":"Generate Content - Opper","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T12:19:44.577Z","gitLastModified":"2026-06-08T13:52:28.000Z","originalFileLocation":"v3-api-reference/compatibility/generate-content.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=\"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling models.generate_content(). The request body is the Gemini GenerateContentRequest shape (camelCase contents / systemInstruction / generationConfig); the response is candidates[].content.parts[] + usageMetadata. The {model} path segment resolves as on the other compat endpoints: a bare model name (e.g. gemini-2.5-flash) routes over that model\u0026#x27;s pool, and an Opper-canonical id (e.g. vertexai/gemini-2.5-flash) pins that endpoint.\">\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=\"Generate Content - Opper\">\u003cmeta data-mint-head property=\"og:description\" content=\"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling models.generate_content(). The request body is the Gemini GenerateContentRequest shape (camelCase contents / systemInstruction / generationConfig); the response is candidates[].content.parts[] + usageMetadata. The {model} path segment resolves as on the other compat endpoints: a bare model name (e.g. gemini-2.5-flash) routes over that model\u0026#x27;s pool, and an Opper-canonical id (e.g. vertexai/gemini-2.5-flash) pins that endpoint.\">\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/generate-content\">\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=Google\u0026amp;title=Generate+Content\u0026amp;description=Google+Gemini-compatible+generateContent+endpoint+%E2%80%94+the+drop-in+surface+for+SDKs+calling+%60models.generate_content%28%29%60.+The+request+body+is+the+Gemini+%60GenerateCo\u0026amp;theme=2bfe23844db8025c327f2519\u0026amp;signature=1f64a8b53e6de62eede25efc6e82846383259cefece431ffe485b8917e2a2313\">\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=\"Generate Content - Opper\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling models.generate_content(). The request body is the Gemini GenerateContentRequest shape (camelCase contents / systemInstruction / generationConfig); the response is candidates[].content.parts[] + usageMetadata. The {model} path segment resolves as on the other compat endpoints: a bare model name (e.g. gemini-2.5-flash) routes over that model\u0026#x27;s pool, and an Opper-canonical id (e.g. vertexai/gemini-2.5-flash) pins that endpoint.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://opper.mintlify.app/_mintlify/api/og/v2?division=Google\u0026amp;title=Generate+Content\u0026amp;description=Google+Gemini-compatible+generateContent+endpoint+%E2%80%94+the+drop-in+surface+for+SDKs+calling+%60models.generate_content%28%29%60.+The+request+body+is+the+Gemini+%60GenerateCo\u0026amp;theme=2bfe23844db8025c327f2519\u0026amp;signature=1f64a8b53e6de62eede25efc6e82846383259cefece431ffe485b8917e2a2313\">\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/generate-content\">\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/generate-content.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/generate-content#webpage\",\"url\":\"https://docs.opper.ai/v3-api-reference/compatibility/generate-content\",\"name\":\"Generate Content\",\"description\":\"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling models.generate_content(). The request body is the Gemini GenerateContentRequest shape (camelCase contents / systemInstruction / generationConfig); the response is candidates[].content.parts[] + usageMetadata. The {model} path segment resolves as on the other compat endpoints: a bare model name (e.g. gemini-2.5-flash) routes over that model's pool, and an Opper-canonical id (e.g. vertexai/gemini-2.5-flash) pins that endpoint.\",\"dateModified\":\"2026-06-08T13:52:28.000Z\",\"isPartOf\":{\"@id\":\"https://docs.opper.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/generate-content#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/generate-content#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Compatibility\",\"item\":\"https://docs.opper.ai/v3-api-reference/compatibility/chat-completions\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google\",\"item\":\"https://docs.opper.ai/v3-api-reference/compatibility/create-interaction\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Generate Content\",\"item\":\"https://docs.opper.ai/v3-api-reference/compatibility/generate-content\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/generate-content#apireference\",\"headline\":\"Generate Content\",\"name\":\"Generate Content\",\"description\":\"Google Gemini-compatible generateContent endpoint — the drop-in surface for SDKs calling models.generate_content(). The request body is the Gemini GenerateContentRequest shape (camelCase contents / systemInstruction / generationConfig); the response is candidates[].content.parts[] + usageMetadata. The {model} path segment resolves as on the other compat endpoints: a bare model name (e.g. gemini-2.5-flash) routes over that model's pool, and an Opper-canonical id (e.g. vertexai/gemini-2.5-flash) pins that endpoint.\",\"url\":\"https://docs.opper.ai/v3-api-reference/compatibility/generate-content\",\"mainEntityOfPage\":{\"@id\":\"https://docs.opper.ai/v3-api-reference/compatibility/generate-content#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","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","description":"Google Interactions API compatible endpoint. Supports streaming via the stream parameter.","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","description":"Streaming variant of generateContent. Pass `?alt=sse` (as Google's SDKs do) to receive Server-Sent Events; each `data:` line is a partial `GenerateContentResponse`. The request body matches `:generateContent`.","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":"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/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"}]}]}]}]},"title":"Generate Content - Opper","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}