# Opper > 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. - [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 700+ models. Drop in your SDK, fall back across models with dynamic routes, keep data in the EU, and see one bill across every provider. - [Security and compliance](https://docs.opper.ai/overview/security.md): ISO/IEC 27001:2022 certified and hosted in Stockholm. Certifications, plans with SSO and audit logs, retention defaults, DPA, sub-processors, and the controls that keep data in the EU. - [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, Google AI, or TypeSafe SDK against Opper by changing the base URL and API key. - [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. - [Rerank](https://docs.opper.ai/build/gateway/rerank.md): Rank retrieved documents by relevance to a query before passing them to a model. - [Classification & scoring](https://docs.opper.ai/build/gateway/evaluations.md): Get probabilities, categories, and scores from decision models through OpenAI Decisions or TypeSafe System One. - [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. - [Service tiers](https://docs.opper.ai/build/gateway/service-tiers.md): Trade speed for price per request: flex for a discount, priority for faster tokens. One field, the same as on OpenAI. - [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 and key. - [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 endpoint across every image model. - [Audio](https://docs.opper.ai/build/multimodal/audio.md): Speech, transcription, music and sound effects 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. - [Logs](https://docs.opper.ai/control-plane/logs.md): Every provider call a project makes, with its model, provider, status, tokens, cost and latency, plus its input and output when a retention rule stores them. - [Rules](https://docs.opper.ai/control-plane/rules/overview.md): Set organization-wide limits for data, spend, model access, checks, and routing. - [Opper retention](https://docs.opper.ai/control-plane/rules/retention.md): Choose whether Opper stores traces and how long to keep them. - [Spend limits](https://docs.opper.ai/control-plane/rules/spend.md): Set a monthly organization budget and optional project caps. - [Model access: provider and model allowlist](https://docs.opper.ai/control-plane/rules/model-access.md): Allow or block providers, service routes, makers, countries, locations, and models for your organization, and require provider data practices such as zero data retention. Enforced on every call. - [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. - [Keep AI inference in the EU (EU data residency)](https://docs.opper.ai/control-plane/eu-data-residency.md): Enforce EU-only inference and storage for every AI model call with one organization-wide Model access rule, or choose an EU route per call on any plan. Opper itself is hosted in Stockholm. - [Enforce zero data retention (ZDR)](https://docs.opper.ai/control-plane/zero-data-retention.md): Zero data retention on Opper: store no prompts or outputs at Opper and allow only providers that neither train on nor log your content. Choose ZDR routes per call on any plan, or enforce ZDR org-wide with Rules. - [Sovereign AI: a European-owned AI gateway (Opper on evroc)](https://docs.opper.ai/control-plane/sovereign-ai.md): Opper on evroc is a sovereign AI gateway: the same Opper on evroc, the Swedish cloud, paired with European-owned model providers hosted in Europe. For public sector, defense, and regulated teams. Access by onboarding. - [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. - [Default model](https://docs.opper.ai/control-plane/route.md): Set the model a call uses when it doesn't name one, per organization or project, with a route rule in the Management API. - [Roles and permissions](https://docs.opper.ai/control-plane/roles-and-permissions.md): What each role in an Opper organization can do, which plans can assign roles, and how to invite a member with a role or change it later. - [Management API](https://docs.opper.ai/control-plane/management-api.md): Provision projects, runtime API keys, members, dynamic routes and rules programmatically, from CI or infrastructure-as-code. - [Apps](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): Use Copilot CLI with your Opper sign-in, allowed models, and personal allowance - [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): Use Opper models in VS Code chat with browser sign-in and personal usage tracking - [Cursor](https://docs.opper.ai/integrations/editors/cursor.md): Point Cursor at Opper as a custom OpenAI base URL, and add Opper skills 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 700+ 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, manage models, 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 - [MCP server](https://docs.opper.ai/developer-tools/mcp.md): Connect a coding agent to your Opper account so it can create projects and API keys, check models and make calls, with your approval in the browser - [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. - [Decisions](https://docs.opper.ai/v3-api-reference/compatibility/create-decision.md): OpenAI Decisions-compatible synchronous evaluation. Send `model`, `input` (a string, or user messages with `input_text` and inline base64 `input_image` parts) and typed `questions` (`predicate`, `choice`, `score`); `answers` come back in question order with probabilities and confidence; a question t… - [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). - [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… - [System One evaluation](https://docs.opper.ai/v3-api-reference/compatibility/systemone.md): System One-compatible synchronous evaluation. Send `model`, `state` and named typed `questions` (`noul`, `choice`, `score`). TypeSafe models also take images and `box` questions (preview upstream; format and limits may change): send the `TypeSafe-Danger-Zone-Images: true` header, which is forwarded… - [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; `response_format` is accepted as an alias, and a `response_format` that is not an audio format, such as `b64_json`, is ignored), and `speed` are normalized a… - [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… - [Generate audio](https://docs.opper.ai/v3-api-reference/audio/create-audio-generation.md): Generate audio from a text prompt with any audio generation model from `GET /v3/audio/models`: music (`type=music`) or sound effects and ambience (`type=sound`). By default runs synchronously and returns it inline as base64 (200). Set `async: true` to run it on the background worker and get a 202 wi… - [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,music,sound` 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 family with `type=tts` (POST /v3/audio/speech), `type=stt` (POS… - [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): Without `model`: the project's custom cloned voices, newest first. With `model` (a text-to-speech model id): every voice that model takes as `voice` on /v3/audio/speech, which is the provider's preset voices (`type: preset`) followed by the project's clones on that provider (`type: custom`). Presets… - [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… - [Rerank documents](https://docs.opper.ai/v3-api-reference/rerank/rerank-documents.md): Reorder `documents` by relevance to `query` and get them back most-relevant first. `model`, `query` and `documents` are required; `top_n` caps how many results come back (integer >=1; default: all). `top_k` is a compatibility alias (zero means unspecified); positive values must match when both field… - [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 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 key is returned only on initial creation when return_secret is not false; the user MCP tool defaults false. Reuse idempotency_key with identical arguments after uncertain results. A replay returns existing metadata without a secret; changed arguments… - [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. - [List members](https://docs.opper.ai/v3-api-reference/management/list-members.md): Lists every member of the calling organization with their effective role, and marks the one member ownership resolves to. Requires the `members:read` scope. - [Remove a member](https://docs.opper.ai/v3-api-reference/management/remove-member.md): Removes the person's membership in the calling organization and revokes the credentials that membership issued: their runtime API keys in this organization, the OAuth authorizations behind those keys, and their agent connections scoped to it. This is not a user deletion. The account remains, as does… - [List invitations](https://docs.opper.ai/v3-api-reference/management/list-invites.md): Lists the organization's invitations. Pass `pending=true` for the unaccepted ones, `pending=false` for the accepted. Requires the `members:read` scope. - [Invite a member](https://docs.opper.ai/v3-api-reference/management/create-invite.md): Invites an address into the organization and emails the invitation. The response carries the acceptance token and link as well, so a caller that would rather deliver it itself can, and `email_sent` reports whether the mail was queued. A live invitation for the same address is resent rather than dupl… - [Revoke an invitation](https://docs.opper.ai/v3-api-reference/management/revoke-invite.md): Deletes an invitation, so its link stops working. Revoking an accepted invitation removes the record of the acceptance, not the membership it produced. Requires the `members:write` scope. - [List dynamic routes](https://docs.opper.ai/v3-api-reference/management/list-dynamic-routes.md): Lists routes in the calling organization, including whether drafts differ from the deployed version. Requires the `dynamic_routes:read` scope. meta.default_classifier_chain is the model chain a classifier uses when it does not pin one. meta.default_first_token_timeout_ms is the first-token timeout a… - [Create a dynamic route](https://docs.opper.ai/v3-api-reference/management/create-dynamic-route.md): Creates a route draft. Omit graph to seed a complete default graph, then use data.draft.graph as a starting point. Empty graphs are invalid. Omit deploy or set deploy=false to keep the route unpublished; deploy=true changes live routing immediately. Review data.draft.validation, save changes with up… - [Get a dynamic route](https://docs.opper.ai/v3-api-reference/management/get-dynamic-route.md): Returns the route, draft graph, validation issues and active version. Requires the `dynamic_routes:read` scope. - [Replace the draft](https://docs.opper.ai/v3-api-reference/management/update-dynamic-route-draft.md): Saves draft changes without deploying. Omitted description, graph and layout are preserved; an empty description clears it. Supply the complete graph to replace it. Structural errors reject the save; inspect meta.issues and data.draft.validation for remaining issues before deployment. Use simulate_d… - [Deploy the draft](https://docs.opper.ai/v3-api-reference/management/deploy-dynamic-route.md): Validates and deploys the current draft as a new immutable version, changing live routing. Returns the deployed version in meta.deployed_version. Requires the `dynamic_routes:write` scope. - [Simulate a request through the route](https://docs.opper.ai/v3-api-reference/management/simulate-dynamic-route.md): Omit version_number or set it to null to simulate the current draft, including an unpublished route. To simulate history, supply a positive version_number from list_dynamic_route_versions. Zero is invalid and does not mean draft. Minimal draft call: {"name":"support","version_number":null}. Optional… - [List a route's versions](https://docs.opper.ai/v3-api-reference/management/list-dynamic-route-versions.md): Lists immutable deployed-version summaries for a route. Requires the `dynamic_routes:read` scope. - [Get a version](https://docs.opper.ai/v3-api-reference/management/get-dynamic-route-version.md): Returns a historical deployed version, including its graph and layout. Requires the `dynamic_routes:read` scope. - [Roll back to a version](https://docs.opper.ai/v3-api-reference/management/rollback-dynamic-route.md): Publishes a historical version as a new deployed version and changes live routing immediately. Returns the new version in meta.deployed_version. Requires the `dynamic_routes:write` scope. The draft is left unchanged. - [Copy a version into the draft](https://docs.opper.ai/v3-api-reference/management/restore-dynamic-route-version-to-draft.md): Replaces the current draft with a historical version without changing live routing. Review the returned draft validation, then simulate the draft by omitting version_number before explicitly deploying. Requires the `dynamic_routes:write` scope. - [Delete a dynamic route](https://docs.opper.ai/v3-api-reference/management/delete-dynamic-route.md): Soft-deletes the route. Calls to `dynamic/` fail from the next request on. Requires the `dynamic_routes:write` scope. - [List control rules](https://docs.opper.ai/v3-api-reference/management/list-control-rules.md): Lists rules in the calling organization. Project filters include inherited organization rules and matching function rules. Allowlist rules include effective_count and parent_allowlist; route rules may include allowed_model_ids. Requires the `controls:read` scope. - [Create a control rule](https://docs.opper.ai/v3-api-reference/management/create-control-rule.md): Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the `controls:write` scope. - [Update a control rule](https://docs.opper.ai/v3-api-reference/management/update-control-rule.md): Updates name, enabled, config or schema_version; omit fields to keep them and use name:null to clear a name. Config is replaced, not merged. ID, kind and scope are immutable. An empty update is rejected. Enabling zero-day retention or ZDR can permanently delete files and may require acknowledgement… - [Delete a control rule](https://docs.opper.ai/v3-api-reference/management/delete-control-rule.md): Deletes a rule and stops its enforcement; inherited rules still apply. Requires the `controls:write` scope. - [Get usage and cost](https://docs.opper.ai/v3-api-reference/management/get-usage.md): Calls, tokens and cost for the calling organization over a window of at most 31 days, or for one of its projects with `project_uuid`, optionally grouped by API key, model, provider or project and split into hourly or daily UTC buckets. The figures are the ones the platform's usage pages show. `count… - [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) ## Optional - [Cookbook](https://github.com/opper-ai/opper-cookbook) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.