# Sideren > Sideren is a model API built for agents: one key, one endpoint, the whole model catalog. Drop-in compatible with the Anthropic and OpenAI APIs. - [One API. Every model. Built for agent loops.](https://docs.sideren.io/index.md): Sideren is a model API built for agents: point your tool at a single endpoint, authenticate with one key, and reach the entire Sideren model catalog through the protocols your stack already speaks. - [Key. Base URL. First call.](https://docs.sideren.io/quickstart.md): Three steps from zero to a response. If you are wiring up a coding agent, one command does all three — see the fast paths at the bottom. - [The model catalog.](https://docs.sideren.io/models.md): Every model in the catalog with its tier, context window and capabilities. Request one by name with the model field. - [Plans, credits, and limits.](https://docs.sideren.io/plans.md): Every Sideren plan gives you credits. Each request uses credits for the model that served it, and a plan's monthly credits are a hard limit. - [The Sideren CLI.](https://docs.sideren.io/cli.md): se, Sideren's own coding agent for the terminal, is coming soon. Until then, the setup helper points the agents you already use at Sideren. - [Agents on Sideren — the full list.](https://docs.sideren.io/guides/other-tools.md): If a tool has an OpenAI-compatible setting, it runs on Sideren: an API base pointed at the gateway, an sdn_ key, and a catalog model id. Every agent has its own page with the exact config. - [Claude Code on Sideren.](https://docs.sideren.io/guides/claude-code.md): Claude Code speaks the Anthropic Messages dialect, and Sideren serves every model in its catalog on that dialect — so Claude Code runs on any of our models. Four environment variables, or one command. - [Codex CLI on Sideren.](https://docs.sideren.io/guides/codex.md): Codex talks the OpenAI Responses protocol. One provider block in config.toml points it at the gateway; the key lives in that block so Desktop and new terminals work without an env var. - [Cursor on Sideren.](https://docs.sideren.io/guides/cursor.md): Cursor's models settings accept an OpenAI-compatible override — point the OpenAI base URL at the gateway, paste your key, and add Sideren model ids. - [opencode on Sideren.](https://docs.sideren.io/guides/agents/opencode.md): Add a Sideren provider to opencode.json and pick any catalog model. The @ai-sdk/openai-compatible package carries the wire format. - [Crush on Sideren.](https://docs.sideren.io/guides/agents/crush.md): Register Sideren as an openai-compat provider in crush.json and point Crush's models block at it. - [Goose on Sideren.](https://docs.sideren.io/guides/agents/goose.md): Goose runs on Sideren through its built-in openai provider — four environment variables, and OPENAI_HOST takes the bare origin. - [Hermes Agent on Sideren.](https://docs.sideren.io/guides/agents/hermes-agent.md): One command wires Hermes Agent to Sideren — a named provider in ~/.hermes/config.yaml, the key in ~/.hermes/.env. - [OpenClaw on Sideren.](https://docs.sideren.io/guides/agents/openclaw.md): Register Sideren under models.providers in ~/.openclaw/openclaw.json with the openai-completions API, then select it as the agent model. - [Qwen Code on Sideren.](https://docs.sideren.io/guides/agents/qwen-code.md): Three variables in a .qwen/.env file point Qwen Code at the gateway — pick Custom Provider on first launch. - [OpenHands on Sideren.](https://docs.sideren.io/guides/agents/openhands.md): Advanced LLM settings in OpenHands take the gateway URL, an sdn_ key, and an openai/-prefixed catalog model id. - [Aider on Sideren.](https://docs.sideren.io/guides/agents/aider.md): Aider runs on Sideren over its OpenAI-compatible route — an openai/-prefixed catalog id and the gateway as the API base. - [Zed on Sideren.](https://docs.sideren.io/guides/agents/zed.md): Add an openai_compatible provider to Zed's settings.json, keep the key out of the file — Zed reads it from the provider's Settings UI or SIDEREN_API_KEY. - [Continue on Sideren.](https://docs.sideren.io/guides/agents/continue.md): One models entry per catalog id in ~/.continue/config.yaml points Continue at the gateway — chat, edit, and autocomplete can each use a different model. - [Cline on Sideren.](https://docs.sideren.io/guides/agents/cline.md): Cline runs on Sideren through its OpenAI Compatible provider: the gateway URL, your sdn_ key, and any catalog model id. - [Kilo Code on Sideren.](https://docs.sideren.io/guides/agents/kilo-code.md): Kilo Code's custom provider dialog takes the gateway URL, your sdn_ key, and catalog model ids entered by hand. - [One key, both protocols.](https://docs.sideren.io/authentication.md): Every request is authenticated with one API key. How you present it depends on which protocol you are speaking. - [The unified surface.](https://docs.sideren.io/api/overview.md): One gateway, every protocol your tools already speak. Every endpoint lives under /v1 at a single origin, authenticated with one sdn_ key. - [Chat Completions.](https://docs.sideren.io/api/chat-completions.md): The OpenAI Chat Completions dialect on the Sideren catalog. If your client speaks to OpenAI, it speaks to Sideren — swap the base URL and the key, keep everything else. - [Responses.](https://docs.sideren.io/api/responses.md): The OpenAI Responses dialect on the Sideren catalog — the wire protocol the Codex CLI uses. Send input, receive typed output items, stream with SSE. - [Messages.](https://docs.sideren.io/api/messages.md): The Anthropic Messages dialect on the Sideren catalog — the surface Claude Code and the Anthropic SDKs speak. Content blocks, tools, vision, and PDFs, with SSE streaming. - [Completions (legacy).](https://docs.sideren.io/api/completions.md): The legacy OpenAI text-completions dialect — prompt in, text out. Supported so older tools keep working unmodified; new integrations should use Chat Completions. - [Embeddings.](https://docs.sideren.io/api/embeddings.md): Vectors for retrieval and agent memory, next to your chat calls — same key, same origin. Seven models from 384 to 2048 dimensions, OpenAI-compatible. - [Count tokens.](https://docs.sideren.io/api/count-tokens.md): A fast estimate of the input tokens a Messages request will consume — the endpoint context meters (including Claude Code's) call before sending. - [Batches.](https://docs.sideren.io/api/batches.md): For offline and high-volume work: submit many requests in one call, poll until the batch ends, fetch results as JSONL. Two flavors of the same machinery — pick the one whose request shape your items use. - [List and retrieve models.](https://docs.sideren.io/api/models-endpoint.md): GET /v1/models is the catalog, self-describing and always authoritative. Every entry carries its capabilities, limits, rates, and the parameters it accepts — so a client can decide what to send without a hard-coded table. - [Idempotency keys.](https://docs.sideren.io/api/idempotency.md): Send an Idempotency-Key when creating a batch, and a retried request is answered from the first attempt instead of running the work twice. - [Predictable failures.](https://docs.sideren.io/errors.md): The API returns standard HTTP status codes with a JSON error body shaped for the protocol you called — Anthropic-shaped on /v1/messages, OpenAI-shaped on the OpenAI endpoints. Match on the status; read error.message for the human explanation. - [Response headers.](https://docs.sideren.io/headers.md): The API keeps its header surface small and stable: the public model identity, request-window state, how much of the month you have used, and retry timing. - [Moving an existing app over.](https://docs.sideren.io/guides/migrating.md): You already have code calling OpenAI, Anthropic, or an aggregator. Here is exactly what changes — usually two lines — and the handful of things worth checking before you cut traffic over. - [Streaming.](https://docs.sideren.io/guides/streaming.md): Every chat protocol streams over Server-Sent Events — set stream: true and consume tokens as they generate. Each dialect keeps its native event shape, so official SDKs work unchanged. - [Tool calling.](https://docs.sideren.io/guides/tool-calling.md): Tool calling works on all three protocols — Chat Completions, Responses and Messages — and Sideren carries your tools, the model's calls and your results exactly as sent. The loop is the same everywhere: define, receive a call, execute, return the result. - [Structured output.](https://docs.sideren.io/guides/structured-output.md): When downstream code parses the answer, ask for the shape up front. Three patterns, strongest first: a JSON schema, plain JSON mode, or a tool schema on the Messages dialect. - [Prompt caching.](https://docs.sideren.io/guides/prompt-caching.md): Agent sessions resend the same context every turn — the system prompt, the attached documents, the conversation so far. On models that cache input, that repeated context is recognized and served from cache automatically, and it uses fewer credits than fresh input. - [Which model actually serves you.](https://docs.sideren.io/guides/model-routing.md): What the model field accepts — catalog ids, aliases, bare names, and the stock ids your SDK already has baked in — plus what happens when you leave it out or set it to auto. - [Reasoning models.](https://docs.sideren.io/guides/reasoning.md): Many models in the catalog think before they answer. Reasoning is hidden unless you ask for it — here is how to ask, in each dialect, and what changes about budgeting when you do. - [Images and documents.](https://docs.sideren.io/guides/vision.md): Send an image in either dialect and a vision model reads it. Which models can is a smaller list than the catalog suggests — check the capability flag before you send, because a text-only model is a 400, not a shrug. - [One command to wire up your agents.](https://docs.sideren.io/setup.md): npx sideren is the setup helper: it points the coding agents you already use at Sideren. Pick your agents, install what's missing, choose models from the live catalog, paste your key, verify. It deep-merges into your existing files, keeps timestamped backups, and is safe to re-run. - [What you can rely on.](https://docs.sideren.io/reliability.md): Sideren is built to be the boring part of your stack. This page is the contract: the behaviors you can design an agent around, stated as outcomes — not implementation. - [When something isn't working.](https://docs.sideren.io/support.md): The failures people actually hit, in the order they hit them — what each one means and the one thing to change. Then how to reach us, and what to include so the first reply is the useful one. This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.