# Opper - [What is Opper?](https://docs.opper.ai/overview/about.md): Opper is one connection to every AI model, with the tools you need to ship AI to real users. - [Quickstart](https://docs.opper.ai/overview/quickstart.md): Make your first Opper call in under five minutes. - [Core concepts](https://docs.opper.ai/overview/concepts.md): How Opper connects model calls, projects, rules, and traces. - [AI Gateway](https://docs.opper.ai/overview/gateway.md): One endpoint in front of 300+ models. Drop in your SDK, route by goal, keep data in the EU, and see one bill across every provider. - [Security](https://docs.opper.ai/overview/security.md): Built in Stockholm, hosted in the EU. One sub-processor for every model. No training on your data, and only metadata stored by default. - [Models](https://docs.opper.ai/capabilities/models.md): Every model Opper supports, with EU-hosted options marked. - [Custom models](https://docs.opper.ai/capabilities/custom-models.md): Bring your own key: register your own provider deployments and API keys, then call them like any other Opper model. - [Dynamic routes](https://docs.opper.ai/capabilities/routes/overview.md): Build a graph that picks the model per request, deploy it, and call it like a model. - [Pool node](https://docs.opper.ai/capabilities/routes/pool.md): Rank several models per request on price, latency or throughput, and try them in that order. - [Build on Opper](https://docs.opper.ai/build/overview.md): One gateway, every model and modality. Bring the SDK you already use. - [Drop-in SDKs](https://docs.opper.ai/build/gateway/drop-in-sdks.md): Use the OpenAI, Anthropic, or Google AI SDK against Opper. Two lines of config, your code stays the same. - [Completions](https://docs.opper.ai/build/gateway/completions.md): The basic gateway call: send messages, pick a model, get a response. - [Structured output](https://docs.opper.ai/build/gateway/structured-output.md): Constrain a response to a JSON Schema. Get back validated, typed JSON instead of free text. - [Tool calling](https://docs.opper.ai/build/gateway/tools.md): Let the model decide when to call functions you define. The standard tool-use round-trip. - [Provider server-side tools](https://docs.opper.ai/build/gateway/server-tools.md): Use Anthropic, OpenAI, and Google server-side tools (web search, code execution, grounding) through Opper. - [Web search](https://docs.opper.ai/build/gateway/web-search.md): Portable web search via the opper:web_search server-side tool. One tool entry that works on every compat endpoint, with native server-side search where the routed model supports it and Opper-managed fallback where it does not. - [Conversations](https://docs.opper.ai/build/gateway/conversations.md): Multi-turn chat with message history. The foundation of any chatbot or assistant. - [Streaming](https://docs.opper.ai/build/gateway/streaming.md): Stream chat responses token-by-token over Server-Sent Events. - [Prompt caching](https://docs.opper.ai/build/gateway/prompt-caching.md): Reuse a large, stable prompt prefix across calls to cut cost and latency on Anthropic models. Opt-in, one field. - [Tags & usage attribution](https://docs.opper.ai/build/gateway/usage-attribution.md): Attach key:value tags to calls, then slice usage and cost by customer, team, or environment — via the analytics API, the CLI, or the dashboard. - [Multimodality](https://docs.opper.ai/build/multimodal/overview.md): Beyond text: images, audio, and video through the same gateway, key, and tracing. - [Files](https://docs.opper.ai/build/multimodal/files.md): Reusable storage for media. Upload once, reference by id across image, audio, and video calls. - [Vision & PDFs](https://docs.opper.ai/build/multimodal/vision-pdfs.md): Send images and PDF documents to the model as part of a chat message. - [OCR](https://docs.opper.ai/build/multimodal/ocr.md): Extract text and structure from PDFs and images as per-page markdown, through one gateway and key. - [Images](https://docs.opper.ai/build/multimodal/images.md): Generate and edit images with one synchronous endpoint across every image model. - [Audio](https://docs.opper.ai/build/multimodal/audio.md): Turn text into speech and speech into text through one gateway and key. - [Video](https://docs.opper.ai/build/multimodal/video.md): Generate video from a text prompt or reference image with a single async endpoint. - [Realtime quickstart](https://docs.opper.ai/build/realtime/quickstart.md): Open your first voice-to-voice session in under five minutes. - [Realtime protocol](https://docs.opper.ai/build/realtime/protocol.md): Full WebSocket protocol reference for two-way voice conversations with Opper. - [Roundtable](https://docs.opper.ai/build/roundtable/overview.md): Ask several models the same question in parallel, then consolidate or compare their answers. - [Roundtable quickstart](https://docs.opper.ai/build/roundtable/quickstart.md): Ask three models one question and get a consolidated answer. - [Observe & Control](https://docs.opper.ai/control-plane/overview.md): Inspect model calls, enforce organization rules, and route traffic without changing application code. - [Rules](https://docs.opper.ai/control-plane/rules/overview.md): Set organization-wide limits for data, spend, model access, checks, and routing. - [Data retention](https://docs.opper.ai/control-plane/rules/retention.md): Choose how long Opper stores call content, or keep none of it. - [Spend limits](https://docs.opper.ai/control-plane/rules/spend.md): Set a monthly organization budget and optional project caps. - [Model access](https://docs.opper.ai/control-plane/rules/model-access.md): Control which providers, regions, countries, and models your apps can use. - [Checks](https://docs.opper.ai/control-plane/rules/checks.md): Score quality or flag, redact, and block content in model calls. - [Routing](https://docs.opper.ai/control-plane/rules/routing.md): Choose which provider a model pool tries first: cheapest, fastest, highest throughput, or a weighted blend. - [Traces](https://docs.opper.ai/control-plane/trace.md): See the full tree behind every call — model calls, tool calls, and every rule that fired. - [Route](https://docs.opper.ai/control-plane/route.md): Pin a default model for an organization or project. - [Management API](https://docs.opper.ai/control-plane/management-api.md): Provision projects and runtime API keys programmatically, from CI or infrastructure-as-code. - [Integrations](https://docs.opper.ai/integrations/overview.md): Run the coding agents, editors, chat apps, and automation platforms you already use on any model in the Opper catalog - [Claude Code](https://docs.opper.ai/integrations/coding-agents/claude-code.md): Run Anthropic's terminal coding agent on any model in the Opper catalog - [Codex](https://docs.opper.ai/integrations/coding-agents/codex.md): Run OpenAI's Codex CLI on any model in the Opper catalog - [OpenCode](https://docs.opper.ai/integrations/coding-agents/opencode.md): Run SST's open-source terminal coding agent on any model in the Opper catalog - [pi](https://docs.opper.ai/integrations/coding-agents/pi.md): Run the pi terminal coding agent on Opper, with native provider support and session tracing - [DeepSeek Harness](https://docs.opper.ai/integrations/coding-agents/deepseek-harness.md): Add Opper as a custom provider in DeepSeek's open-source agent harness - [GitHub Copilot CLI](https://docs.opper.ai/integrations/coding-agents/github-copilot-cli.md): Run GitHub's terminal coding agent on any Opper model — no Copilot plan or GitHub login required - [Aider](https://docs.opper.ai/integrations/coding-agents/aider.md): Point Aider at Opper to pair-program in your terminal on any model in the catalog - [Goose](https://docs.opper.ai/integrations/coding-agents/goose.md): Configure Goose to use Opper as its OpenAI-compatible provider - [Droid](https://docs.opper.ai/integrations/coding-agents/droid.md): Add Opper as a custom model provider in Factory's coding agent - [Voidleap Code](https://docs.opper.ai/integrations/coding-agents/voidleap-code.md): Pick Opper from the built-in provider list in Voidleap Code - [GitHub Copilot](https://docs.opper.ai/integrations/editors/github-copilot.md): Run Copilot Chat and agent mode in VS Code on any Opper model, via the Opper extension - [Cursor](https://docs.opper.ai/integrations/editors/cursor.md): Point Cursor at Opper as a custom OpenAI base URL, and add Opper SDK rules to your project - [Cline](https://docs.opper.ai/integrations/editors/cline.md): Add Opper as an OpenAI Compatible provider in Cline - [Kilo Code](https://docs.opper.ai/integrations/editors/kilo-code.md): Add Opper as an OpenAI Compatible provider in Kilo Code - [Zed](https://docs.opper.ai/integrations/editors/zed.md): Add Opper as an openai_compatible provider in Zed, via the agent panel or settings.json - [JetBrains AI Assistant](https://docs.opper.ai/integrations/editors/jetbrains.md): Add Opper as an OpenAI-compatible provider in IntelliJ, PyCharm, and every JetBrains IDE - [Continue.dev](https://docs.opper.ai/integrations/editors/continue.md): Add Opper to Continue.dev for VS Code and JetBrains - [Claude Cowork](https://docs.opper.ai/integrations/personal-agents/claude-cowork.md): Route Anthropic's knowledge-work agent through Opper's Anthropic-compatible gateway - [Claude Desktop](https://docs.opper.ai/integrations/personal-agents/claude-desktop.md): Route Anthropic's desktop app — chat and Claude Code alike — through Opper - [Copilot for Obsidian](https://docs.opper.ai/integrations/personal-agents/obsidian-copilot.md): Pick Opper from the built-in BYOK provider list in Copilot for Obsidian - [OpenClaw](https://docs.opper.ai/integrations/personal-agents/openclaw.md): Run the OpenClaw personal agent on Opper, across WhatsApp, Telegram, and Discord - [Hermes](https://docs.opper.ai/integrations/personal-agents/hermes.md): Run Nous Research's open terminal agent on any model in the Opper catalog - [LibreChat](https://docs.opper.ai/integrations/chat/librechat.md): Add Opper as a custom endpoint in LibreChat, the self-hosted open-source AI chat platform - [Open WebUI](https://docs.opper.ai/integrations/chat/open-webui.md): Add Opper as an OpenAI-compatible connection in Open WebUI - [n8n](https://docs.opper.ai/integrations/automation/n8n.md): Install the Opper community node and use any Opper model in your n8n AI workflows - [Vercel AI SDK](https://docs.opper.ai/integrations/frameworks/vercel-ai-sdk.md): Use any Opper model with the Vercel AI SDK through the official provider package - [Mastra](https://docs.opper.ai/integrations/frameworks/mastra.md): Use Opper as a first-class provider in Mastra, the TypeScript agent framework - [LiteLLM](https://docs.opper.ai/integrations/frameworks/litellm.md): Use Opper as the upstream router for a self-hosted LiteLLM gateway - [Customer support bot](https://docs.opper.ai/guides/customer-service-bot.md): Build a multi-turn support bot on the gateway with tool calling. The model looks up orders when it needs to. - [Claude Code clone](https://docs.opper.ai/guides/claude-code-clone.md): Build a tiny coding agent that reads, writes, and runs code in a loop, using the gateway and tool calling. - [Claude Code Router: Run Claude Code on Any Model](https://docs.opper.ai/guides/claude-code-router.md): Route Claude Code through Opper instead of a local proxy and run it on 300+ models — one API key, provider rates, model fallbacks, and EU-hosted routes. - [Natural language to SQL](https://docs.opper.ai/guides/language-to-sql.md): Turn plain-English questions into SQL you can run, using the gateway and a typed schema. - [Research assistant](https://docs.opper.ai/guides/research-assistant.md): Answer questions with live web search, then return a grounded answer with citations using structured output. - [CLI](https://docs.opper.ai/developer-tools/cli.md): The official Opper command for the terminal: sign in, make calls, view traces, generate images, and launch coding agents through Opper - [Skills](https://docs.opper.ai/developer-tools/skills.md): Markdown files that give AI code editors context about how to use Opper, install once and activate automatically - [Agent SDK Overview](https://docs.opper.ai/agents/overview.md): Build AI agents with tools, streaming, multi-agent composition, and MCP support - [Installation](https://docs.opper.ai/agents/installation.md): Install the unified opperai SDK for Python or TypeScript - [Quickstart](https://docs.opper.ai/agents/quickstart.md): Install, set your API key, and run your first agent - [Tools](https://docs.opper.ai/agents/patterns/tools.md): Define functions an agent can call during its loop - [Structured Output](https://docs.opper.ai/agents/patterns/structured-output.md): Return validated, typed data from an agent run - [Streaming](https://docs.opper.ai/agents/patterns/streaming.md): Observe an agent's work in real time - [Hooks](https://docs.opper.ai/agents/patterns/hooks.md): Observe every lifecycle event during an agent run - [Multi-Agent](https://docs.opper.ai/agents/patterns/multi-agent.md): Compose specialists by exposing one agent as a tool to another - [Conversation](https://docs.opper.ai/agents/patterns/conversation.md): Multi-turn stateful interactions with an agent - [MCP Integration](https://docs.opper.ai/agents/patterns/mcp.md): Connect to Model Context Protocol servers and use their tools - [Migration & legacy SDKs](https://docs.opper.ai/agents/migration.md): Coming from the standalone agent SDKs? Here's where to look - [Chat Completions](https://docs.opper.ai/v3-api-reference/compatibility/chat-completions.md): OpenAI-compatible chat completions endpoint. Supports streaming via the stream parameter. - [Responses](https://docs.opper.ai/v3-api-reference/compatibility/create-response.md): OpenAI Responses API compatible endpoint. Supports streaming via the stream parameter. - [Embeddings](https://docs.opper.ai/v3-api-reference/compatibility/create-embeddings.md): OpenAI-compatible embeddings endpoint. - [List Models](https://docs.opper.ai/v3-api-reference/compatibility/list-models.md): OpenAI Models API compatible endpoint. Returns everything the caller can put in `model` — in OpenAI's models.list shape — so tools that point an OpenAI-compatible base URL at `/v3/compat` (gateways, n8n, LangChain, etc.) can discover the live catalogue without hardcoding model IDs. - [Messages](https://docs.opper.ai/v3-api-reference/compatibility/create-message.md): Anthropic Messages API compatible endpoint. Supports streaming via the stream parameter. - [Count Tokens](https://docs.opper.ai/v3-api-reference/compatibility/count-message-tokens.md): Anthropic Messages token-counting compatible endpoint. Returns the number of input tokens a Messages request would consume, without creating a message. Mirrors Anthropic's POST /v1/messages/count_tokens (same request body as the Messages endpoint, minus the required max_tokens). Supported for Claude… - [Interactions](https://docs.opper.ai/v3-api-reference/compatibility/create-interaction.md): Google Interactions API compatible endpoint. Supports streaming via the stream parameter. - [Generate Content](https://docs.opper.ai/v3-api-reference/compatibility/generate-content.md): 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[]` + `usa… - [Stream Generate Content](https://docs.opper.ai/v3-api-reference/compatibility/stream-generate-content.md): 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`. - [Count Tokens](https://docs.opper.ai/v3-api-reference/compatibility/count-tokens.md): Google-compatible countTokens endpoint for pre-flight context-window sizing. The request body matches `:generateContent`. NOTE: Opper has no in-process Gemini tokenizer and returns a chars/4 heuristic (±~20% on English prose) — sufficient for "does my prompt fit?" checks but not for exact cost proje… - [OpenResponses](https://docs.opper.ai/v3-api-reference/compatibility/openresponses.md): OpenResponses-compatible endpoint with multi-provider support and opper: extension items. - [Generate an image](https://docs.opper.ai/v3-api-reference/images/create-image.md): Generate one or more images. By default runs synchronously and returns them inline (200). Set `async: true` to run a single image on the background worker and get a 202 with a status URL to poll instead — use it for slow models (e.g. gpt-image high, imagen ultra) that can exceed the synchronous time… - [List image models](https://docs.opper.ai/v3-api-reference/images/list-image-models.md): List the models usable with `POST /v3/images` — scoped to the `image_generation` capability. Unlike the video/audio model lists (which scope by `type`), this scopes by capability, because `/v3/images` routes on the `image_generation` capability: the result spans `type:image` models AND hybrid `type:… - [Generate speech](https://docs.opper.ai/v3-api-reference/audio/create-speech.md): Convert text to spoken audio synchronously and get it back inline as base64. `model` and `input` are required; `voice`, `format` (mp3 default), and `speed` are normalized and validated against the model's declared capabilities, and everything in `parameters` is forwarded verbatim to the provider. Ou… - [Transcribe audio](https://docs.opper.ai/v3-api-reference/audio/create-transcription.md): Transcribe audio to text. By default runs synchronously and returns the transcript inline (200); `audio` accepts a `file_`, an https URL, or a base64 data-URI (max 25MB decoded). Set `stream: true` to receive the transcript live as Server-Sent Events (`transcript.text.delta` chunks then a final… - [List audio models](https://docs.opper.ai/v3-api-reference/audio/list-audio-models.md): List the models usable with the `/v3/audio` endpoints — a `type=tts,stt` view of the model catalog. Same shape and query params as `/v3/models` (search, `include`, pagination), but always scoped to audio models. Narrow to one side with `type=tts` (POST /v3/audio/speech) or `type=stt` (POST /v3/audio… - [Create Voice](https://docs.opper.ai/v3-api-reference/audio/create-voice.md): Clone a custom voice from a short reference sample (a few seconds of speech). `model` selects the provider to clone on (e.g. `mistral/voxtral-mini-tts-2603`) — the returned voice works with any of that provider's TTS models; `audio` is the reference sample as a `file_`, an https URL, or a base64… - [List Voices](https://docs.opper.ai/v3-api-reference/audio/list-voices.md): List the project's custom cloned voices, newest first. Paginated with the shared `meta`+`data` shape. Preset voices are not listed here — they're documented per model and passed to /v3/audio/speech by name. - [Get Voice](https://docs.opper.ai/v3-api-reference/audio/get-voice.md): Get one of the project's custom voices by id. - [Delete Voice](https://docs.opper.ai/v3-api-reference/audio/delete-voice.md): Delete one of the project's custom voices. Removes it upstream at the provider too; the reference sample was never stored. - [Generate a video](https://docs.opper.ai/v3-api-reference/video/create-video.md): Submit a deterministic video-generation job. Returns immediately with a generation id and a status URL to poll; the video is produced asynchronously. `model` and `prompt` are required; everything in `parameters` is forwarded verbatim to the provider. `image`/`last_image`/`video`/`reference_images` a… - [List video models](https://docs.opper.ai/v3-api-reference/video/list-video-models.md): List the models usable with `POST /v3/videos` — a `type=video` view of the model catalog. Same shape and query params as `/v3/models` (search, `include`, pagination), but always scoped to video models. Inspect each item's `capabilities` to tell input modality apart: `video_generation` is text-to-vid… - [Extract text (OCR)](https://docs.opper.ai/v3-api-reference/ocr/extract-text.md): Extract text from a document or image synchronously and get it back as per-page markdown. `model` and `document` are required; `document` is one of `{type:"document_url", document_url}`, `{type:"image_url", image_url}`, `{type:"base64", content, document_name}` (PDF or image), or `{type:"file", file… - [List OCR models](https://docs.opper.ai/v3-api-reference/ocr/list-ocr-models.md): List the models usable with `POST /v3/ocr` — a `type=ocr` view of the model catalog. Same shape and query params as `/v3/models` (search, `include`, pagination). Each item's `price_per_page` describes the per-page cost. - [Upload a file](https://docs.opper.ai/v3-api-reference/files/upload-file.md): Upload a file (multipart/form-data) and get back a `file_`. The id can be passed as the `image`/`video`/`reference_images` source on POST /v3/videos. `purpose` defaults to `reference_media` (accepts common image/video types). The MIME type is detected from the bytes; size and per-org quota are e… - [List files](https://docs.opper.ai/v3-api-reference/files/list-files.md): List files for the project, newest first. Paginated with the shared `meta`+`data` shape. Optionally filter by `type`, `purpose`, or a `q` substring search. - [Get file metadata](https://docs.opper.ai/v3-api-reference/files/get-file.md): Get a file's metadata by id. - [Get a file download URL](https://docs.opper.ai/v3-api-reference/files/get-file-content.md): Returns a short-TTL presigned download URL for the file's bytes. - [Set or clear a file's expiry](https://docs.opper.ai/v3-api-reference/files/update-file.md): Set or clear a file's expiry. `ttl_seconds` is the only mutable field: a positive integer schedules the file to expire that many seconds from now; an explicit `null` clears a previously set expiry (files are permanent by default). - [Delete a file](https://docs.opper.ai/v3-api-reference/files/delete-file.md): Delete a file (removes the stored bytes). - [Realtime protocol](https://docs.opper.ai/v3-api-reference/realtime/protocol.md): WebSocket event vocabulary for the Opper Realtime API. See the full guide for end-to-end usage. - [Mint realtime ticket](https://docs.opper.ai/v3-api-reference/realtime/create-realtime-session.md): Server-to-server endpoint that mints a short-lived, single-use ticket for browser realtime sessions. - [Roundtable](https://docs.opper.ai/v3-api-reference/roundtable/create-roundtable.md): Send a query to multiple models in parallel and combine results using a configurable resolution strategy (summary, fast, multiple_choice). - [List examples](https://docs.opper.ai/v3-api-reference/examples/list-examples.md) - [Create example](https://docs.opper.ai/v3-api-reference/examples/create-example.md) - [Batch create examples](https://docs.opper.ai/v3-api-reference/examples/batch-create-examples.md) - [Delete example](https://docs.opper.ai/v3-api-reference/examples/delete-example.md) - [List generations](https://docs.opper.ai/v3-api-reference/generations/list-generations.md): List recorded HTTP request/response generations with pagination. - [Get generation](https://docs.opper.ai/v3-api-reference/generations/get-generation.md): Get a specific recorded generation by ID. - [Delete generation](https://docs.opper.ai/v3-api-reference/generations/delete-generation.md): Delete a specific recorded generation. - [List projects](https://docs.opper.ai/v3-api-reference/management/list-projects.md): Lists every project in the calling organization. Requires the `projects:read` scope. - [Create a project](https://docs.opper.ai/v3-api-reference/management/create-project.md): Creates a project in the calling organization. Requires the `projects:write` scope. - [Get a project](https://docs.opper.ai/v3-api-reference/management/get-project.md): Fetches one project by UUID. Requires the `projects:read` scope. - [Update a project](https://docs.opper.ai/v3-api-reference/management/update-project.md): Updates a project's name and/or description. Omit a field to leave it unchanged; send `"description": null` to clear it. An empty body is rejected. Retention is not settable here — it is a control-plane setting, managed through `/management/v1/controls/rules`. Requires the `projects:write` scope. - [Delete a project](https://docs.opper.ai/v3-api-reference/management/delete-project.md): Soft-deletes the project and permanently deletes every runtime API key bound to it. Requires the `projects:delete` scope. - [List a project's API keys](https://docs.opper.ai/v3-api-reference/management/list-api-keys.md): Lists the runtime API keys bound to a project. Only the key prefix is returned — the full key is shown once, at creation. Requires the `apikeys:read` scope. - [Mint an API key](https://docs.opper.ai/v3-api-reference/management/create-api-key.md): Mints a runtime API key for the project. The full `op-…` key is returned **once**, in this response, and is never retrievable again. Requires the `apikeys:write` scope. - [Delete an API key](https://docs.opper.ai/v3-api-reference/management/delete-api-key.md): Permanently deletes a runtime API key. Requires the `apikeys:write` scope. - [Disable the calling management key](https://docs.opper.ai/v3-api-reference/management/disable-management-key.md): Emergency revocation for a leaked token: disables the management API key the request authenticated with, and every token under it. Possession of the token is the authorization — no scope is required, and this works regardless of the organization's plan. - [List models](https://docs.opper.ai/v3-api-reference/models/list-models.md): Endpoint to retrieve model info. Optional `include` adds extra fields per item: `maker` (underlying-weights creator, e.g. `meta` for Llama), `route` (data-handling / legal block — requires an Opper API key), `benchmarks` (public scores from artificialanalysis.ai; absent for realtime, OCR, image-gen,… - [Create span](https://docs.opper.ai/v3-api-reference/spans/create-span.md): Create a new trace span. - [Update span](https://docs.opper.ai/v3-api-reference/spans/update-span.md): Update an existing trace span. - [Web fetch](https://docs.opper.ai/v3-api-reference/tools/web-fetch.md): Fetch a URL and return its content as markdown. - [Web search](https://docs.opper.ai/v3-api-reference/tools/web-search.md): Search the web and return results with title, URL, and snippet. - [Health check](https://docs.opper.ai/v3-api-reference/system/health-check.md): Returns server health status. - [OpenAPI spec (JSON)](https://docs.opper.ai/v3-api-reference/system/openapi-spec-json.md): Returns the OpenAPI specification in JSON format. - [OpenAPI spec (YAML)](https://docs.opper.ai/v3-api-reference/system/openapi-spec-yaml.md): Returns the OpenAPI specification in YAML format. ## OpenAPI Specs - [openapi-v3](/openapi-v3.json) - [openapi](/openapi.json) ## Optional - [Cookbook](https://github.com/opper-ai/opper-cookbook)