# Opper ## Docs - [Installation](https://docs.opper.ai/agents/installation.md): Install the unified opperai SDK for Python or TypeScript - [Migration & legacy SDKs](https://docs.opper.ai/agents/migration.md): Coming from the standalone agent SDKs? Here's where to look - [Agent SDK Overview](https://docs.opper.ai/agents/overview.md): Build AI agents with tools, streaming, multi-agent composition, and MCP support - [Conversation](https://docs.opper.ai/agents/patterns/conversation.md): Multi-turn stateful interactions with an agent - [Hooks](https://docs.opper.ai/agents/patterns/hooks.md): Observe every lifecycle event during an agent run - [MCP Integration](https://docs.opper.ai/agents/patterns/mcp.md): Connect to Model Context Protocol servers and use their tools - [Multi-Agent](https://docs.opper.ai/agents/patterns/multi-agent.md): Compose specialists by exposing one agent as a tool to another - [Streaming](https://docs.opper.ai/agents/patterns/streaming.md): Observe an agent's work in real time - [Structured Output](https://docs.opper.ai/agents/patterns/structured-output.md): Return validated, typed data from an agent run - [Tools](https://docs.opper.ai/agents/patterns/tools.md): Define functions an agent can call during its loop - [Quickstart](https://docs.opper.ai/agents/quickstart.md): Install, set your API key, and run your first agent - [Completions](https://docs.opper.ai/build/gateway/completions.md): The basic gateway call: send messages, pick a model, get a response. - [Conversations](https://docs.opper.ai/build/gateway/conversations.md): Multi-turn chat with message history. The foundation of any chatbot or assistant. - [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. - [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. - [Streaming](https://docs.opper.ai/build/gateway/streaming.md): Stream chat responses token-by-token over Server-Sent Events. - [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. - [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. - [Audio](https://docs.opper.ai/build/multimodal/audio.md): Turn text into speech and speech into text through one 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. - [Images](https://docs.opper.ai/build/multimodal/images.md): Generate and edit images with one synchronous endpoint across every image model. - [Multimodality](https://docs.opper.ai/build/multimodal/overview.md): Beyond text: images, audio, and video through the same gateway, key, and tracing. - [Video](https://docs.opper.ai/build/multimodal/video.md): Generate video from a text prompt or reference image with a single async endpoint. - [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. - [Build on Opper](https://docs.opper.ai/build/overview.md): One gateway, every model and modality. Bring the SDK you already use. - [Realtime protocol](https://docs.opper.ai/build/realtime/protocol.md): Full WebSocket protocol reference for two-way voice conversations with Opper. - [Realtime quickstart](https://docs.opper.ai/build/realtime/quickstart.md): Open your first voice-to-voice session in under five minutes. - [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. - [Custom models](https://docs.opper.ai/capabilities/custom-models.md): Register your own model deployments and API keys, then call them like any other Opper model. - [Models](https://docs.opper.ai/capabilities/models.md): Every model Opper supports, with EU-hosted options marked. - [Comply](https://docs.opper.ai/control-plane/comply.md): Limit which models calls can use, how long traces stick around, and what you spend. - [Guard](https://docs.opper.ai/control-plane/guard.md): Block or redact content before it reaches the model and before responses go out. - [Memory](https://docs.opper.ai/control-plane/memory.md): Store text and documents, retrieve the most relevant chunks at query time. - [Observe](https://docs.opper.ai/control-plane/observe.md): Score every response against criteria you write. - [Control Plane](https://docs.opper.ai/control-plane/overview.md): The five tools that make AI behavior in production observable, governable, and improvable. - [Route](https://docs.opper.ai/control-plane/route.md): Pin a default model for an organization or project. - [Steer](https://docs.opper.ai/control-plane/steer.md): Turn Observe's quality scores and your feedback into better few-shot examples and prompts. - [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 - [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. - [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. - [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. - [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. - [Core concepts](https://docs.opper.ai/overview/concepts.md): How Opper works, in one mental model: two planes, projects, and a record of every call. - [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. - [Integrations](https://docs.opper.ai/overview/integrations.md): Use Opper as an inference provider to AI agents, editors and CLIs - [Quickstart](https://docs.opper.ai/overview/quickstart.md): Make your first Opper call in under five minutes. - [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. - [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 synchronously. `model` and `audio` are required; `audio` accepts a `file_`, an https URL, or a base64 data-URI (max 25MB). `language` and `prompt` are passed through as hints; `diarize` requests speaker labels (400 on models without diarization support); everything in `p… - [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… - [Chat Completions](https://docs.opper.ai/v3-api-reference/compatibility/chat-completions.md): OpenAI-compatible chat completions 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… - [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… - [Embeddings](https://docs.opper.ai/v3-api-reference/compatibility/create-embeddings.md): OpenAI-compatible embeddings endpoint. - [Interactions](https://docs.opper.ai/v3-api-reference/compatibility/create-interaction.md): Google Interactions API compatible endpoint. Supports streaming via the stream parameter. - [Messages](https://docs.opper.ai/v3-api-reference/compatibility/create-message.md): Anthropic Messages API compatible 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. - [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… - [OpenResponses](https://docs.opper.ai/v3-api-reference/compatibility/openresponses.md): OpenResponses-compatible endpoint with multi-provider support and opper: extension items. - [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`. - [Batch create examples](https://docs.opper.ai/v3-api-reference/examples/batch-create-examples.md): Upload multiple few-shot examples for a function. - [Create example](https://docs.opper.ai/v3-api-reference/examples/create-example.md): Create a single few-shot example for a function. - [Delete example](https://docs.opper.ai/v3-api-reference/examples/delete-example.md): Delete a single few-shot example by UUID. - [List examples](https://docs.opper.ai/v3-api-reference/examples/list-examples.md): List few-shot examples for a function with optional tag filter. - [Delete a file](https://docs.opper.ai/v3-api-reference/files/delete-file.md): Delete a file (removes the stored bytes). - [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. - [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. - [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… - [Delete generation](https://docs.opper.ai/v3-api-reference/generations/delete-generation.md): Delete a specific recorded generation. - [Get generation](https://docs.opper.ai/v3-api-reference/generations/get-generation.md): Get a specific recorded generation by ID. - [List generations](https://docs.opper.ai/v3-api-reference/generations/list-generations.md): List recorded HTTP request/response generations with pagination. - [Generate an image](https://docs.opper.ai/v3-api-reference/images/create-image.md): Generate one or more images synchronously and get them back inline. `model` and `prompt` are required; `n` (max 4), `size`/`aspect_ratio`, `quality`, and `style` are normalized, and everything in `parameters` is forwarded verbatim to the provider. `image`/`mask`/`reference_images` accept an http(s)… - [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:… - [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,… - [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. - [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. - [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). - [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. - [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. - [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. - [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`/`video`/`reference_images` accept an http… - [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… ## OpenAPI Specs - [openapi-v3](https://docs.opper.ai/openapi-v3.json) - [openapi](https://docs.opper.ai/openapi.json) ## Optional - [Cookbook](https://github.com/opper-ai/opper-cookbook)