# Verlon AI - [Welcome to Verlon AI](https://docs.verlon.ai/getting-started/overview.md): The AI Gateway for production applications - route, fallback, and track costs across multiple AI providers - [Quickstart](https://docs.verlon.ai/getting-started/quickstart.md): Get started with Verlon AI in under 5 minutes - [Authentication](https://docs.verlon.ai/getting-started/authentication.md): Learn how to authenticate with the Verlon AI API - [Migrate to Verlon](https://docs.verlon.ai/getting-started/migrate.md): Drop-in migration from LiteLLM, OpenRouter, or a hand-rolled LLM gateway — usually one config change on your side. - [Overview](https://docs.verlon.ai/sdk-reference/overview.md): The Verlon SDK for TypeScript/JavaScript: agent tracing, task attribution, and the live model registry - [Gates](https://docs.verlon.ai/platform/gates.md): Route AI requests through configurable gates with intelligent model selection, fallbacks, and cost controls - [Agent Gates](https://docs.verlon.ai/platform/agent-gates.md): Trace every run of your agent — every LLM call, tool execution, and sub-agent — and control each call site's model remotely - [Bring Your Own Keys](https://docs.verlon.ai/platform/byok.md): Use your own API keys from OpenAI, Anthropic, Google, Mistral, xAI, and Meta with Verlon AI - [Bring Your Own Models](https://docs.verlon.ai/platform/owned-models.md): Register fine-tunes and self-hosted endpoints as first-class models you can route to through Verlon AI - [API Keys](https://docs.verlon.ai/platform/api-keys.md): Generate and manage Verlon API keys to authenticate your requests - [Plans](https://docs.verlon.ai/platform/plans.md): What each plan includes, how unit allowances work, and what happens when you grow past one - [Units](https://docs.verlon.ai/platform/units.md): What a unit is, what counts against your plan, and how non-token work converts - [Spending](https://docs.verlon.ai/platform/spending.md): Monitor and control your AI spending with real-time cost tracking and configurable limits - [Logs](https://docs.verlon.ai/platform/logs.md): View detailed request logs with metrics, costs, and full request/response data - [OpenAI SDK Integration](https://docs.verlon.ai/integrations/openai-sdk.md): How to use Verlon AI with the OpenAI SDK - [Anthropic SDK Integration](https://docs.verlon.ai/integrations/anthropic-sdk.md): How to use Verlon AI with the Anthropic SDK - [Claude Code Integration](https://docs.verlon.ai/integrations/claude-code.md): Run Claude Code on any model through a Verlon coding gate - [MCP (Model Context Protocol)](https://docs.verlon.ai/integrations/mcp.md): Inspect and manage your Verlon AI account from any MCP-compatible client — Claude Desktop, Claude Code, Cursor, Cline, Windsurf. - [Supported LLMs](https://docs.verlon.ai/provider-compatibility/models.md): The models Verlon AI routes across today — grouped by provider, with links to per-provider references. - [OpenAI](https://docs.verlon.ai/provider-compatibility/openai.md): Every OpenAI model Verlon supports — plus quickstart and SDK compatibility (use the OpenAI SDK unchanged against Verlon). - [Anthropic](https://docs.verlon.ai/provider-compatibility/anthropic.md): Every Claude model Verlon supports — plus quickstart and SDK compatibility (use the Anthropic SDK unchanged against Verlon). - [Google](https://docs.verlon.ai/provider-compatibility/google.md): Every Gemini and Gemma model Verlon supports — plus quickstart and how to reach them through the SDK you already use. - [Mistral](https://docs.verlon.ai/provider-compatibility/mistral.md): Every Mistral model Verlon supports — Large, Medium, Small, Ministral, Codestral, Devstral, Magistral, Pixtral — with quickstart and SDK compatibility. - [xAI](https://docs.verlon.ai/provider-compatibility/xai.md): Every xAI model Verlon supports — Grok 4.5, Grok 4.3, the Grok 4.20 line, Grok Build, and Grok Imagine — with quickstart, long-context pricing, and SDK compatibility. - [Meta](https://docs.verlon.ai/provider-compatibility/meta.md): Every Meta Model API model Verlon supports — the Muse Spark reasoning family — with quickstart, reasoning behaviour, and SDK compatibility. - [API Reference Overview](https://docs.verlon.ai/api-reference/overview.md): The Verlon API is OpenAI-format — call it with the SDK you already have - [Chat Completions API](https://docs.verlon.ai/api-reference/chat-completions.md): OpenAI-compatible chat completions endpoint - [Responses API](https://docs.verlon.ai/api-reference/responses.md): OpenAI-compatible Responses endpoint (client.responses.create) - [Anthropic Messages API](https://docs.verlon.ai/api-reference/anthropic-messages.md): Anthropic-compatible messages endpoint - [Mistral-format chat completions](https://docs.verlon.ai/api-reference/mistral-format/mistral-format-chat-completions.md): **Use when:** caller has an existing @mistralai/mistralai SDK flow and wants to route through Verlon with zero code changes via a serverURL swap - [Mistral-format FIM completions](https://docs.verlon.ai/api-reference/mistral-format/mistral-format-fim-completions.md): **Use when:** caller uses mistral.fim.complete / fim.stream (Codestral code completion with prompt + suffix) and wants to route through Verlon via a serverURL swap - [Mistral-format OCR](https://docs.verlon.ai/api-reference/mistral-format/mistral-format-ocr.md): **Use when:** caller uses mistral.ocr.process (document or image to markdown pages) and wants to route through Verlon via a serverURL swap - [Track client-side analytics events](https://docs.verlon.ai/api-reference/analytics/track-client-side-analytics-events.md): **Use when:** caller is reporting batched client-side analytics events (page views, feature usage) — for Verlon's product analytics, not for billing or rate limiting - [OpenAI-format text-to-speech](https://docs.verlon.ai/api-reference/openai-format/openai-format-text-to-speech.md): **Use when:** caller has an existing OpenAI SDK TTS flow and wants to route through Verlon with zero code changes via baseURL swap - [OpenAI-format chat completions](https://docs.verlon.ai/api-reference/openai-format/openai-format-chat-completions.md): **Use when:** caller is migrating an existing OpenAI SDK integration to Verlon with zero code changes — only the `baseURL` swaps to `https://api.verlon.ai/v1/` and `model` becomes a Verlon gate id - [OpenAI-format embeddings](https://docs.verlon.ai/api-reference/openai-format/openai-format-embeddings.md): **Use when:** caller has an existing OpenAI SDK embeddings flow and wants to route through Verlon with zero code changes via baseURL swap - [OpenAI-format image generations](https://docs.verlon.ai/api-reference/openai-format/openai-format-image-generations.md): **Use when:** caller has an existing OpenAI SDK image-generation flow and wants to route through Verlon with zero code changes via baseURL swap - [OpenAI-format Responses API](https://docs.verlon.ai/api-reference/openai-format/openai-format-responses-api.md): **Use when:** caller uses the OpenAI Responses API (client.responses.create) — including the Agents SDK and multi-turn tool loops with encrypted reasoning replay — and wants to route through a Verlon gate by swapping only the baseURL - [OpenAI-format video job list](https://docs.verlon.ai/api-reference/openai-format/openai-format-video-job-list.md): **Use when:** caller uses openai.videos.list to enumerate their video generation jobs - [OpenAI-format video generation job](https://docs.verlon.ai/api-reference/openai-format/openai-format-video-generation-job.md): **Use when:** caller uses openai.videos.create (async video generation: create a job, poll it, download content) and wants to route through Verlon via a baseURL swap - [OpenAI-format video job poll](https://docs.verlon.ai/api-reference/openai-format/openai-format-video-job-poll.md): **Use when:** caller uses openai.videos.retrieve to poll an async video generation job until it completes - [OpenAI-format video job deletion](https://docs.verlon.ai/api-reference/openai-format/openai-format-video-job-deletion.md): **Use when:** caller uses openai.videos.delete to remove a video job - [OpenAI-format video content download](https://docs.verlon.ai/api-reference/openai-format/openai-format-video-content-download.md): **Use when:** caller uses openai.videos.downloadContent to fetch the finished video bytes - [List gates owned by the authenticated user](https://docs.verlon.ai/api-reference/gates/list-gates-owned-by-the-authenticated-user.md): **Use when:** caller wants to enumerate the gates the authenticated principal owns (typical first step when listing or picking one to update) - [Create a new gate](https://docs.verlon.ai/api-reference/gates/create-a-new-gate.md): **Use when:** caller wants to create a new model routing gate so requests can be sent to it via the SDK or compat routes - [Get a gate by id](https://docs.verlon.ai/api-reference/gates/get-a-gate-by-id.md): **Use when:** caller has a gate id and needs the full gate configuration (most common single-gate read path) - [Soft-delete a gate (moves to trash for 30 days)](https://docs.verlon.ai/api-reference/gates/soft-delete-a-gate-moves-to-trash-for-30-days.md): **Use when:** caller wants to delete a gate (soft-delete; stays in trash for 30 days before permanent removal) - [Update a gate](https://docs.verlon.ai/api-reference/gates/update-a-gate.md): **Use when:** caller wants to change a gate's configuration (model, fallbacks, parameters, system prompt, allowed overrides) - [List activity-log entries for a specific gate](https://docs.verlon.ai/api-reference/gates/list-activity-log-entries-for-a-specific-gate.md): **Use when:** caller wants to see the activity timeline (who edited, when, what changed) for one specific gate - [Make this gate its connector's default for new connections](https://docs.verlon.ai/api-reference/gates/make-this-gate-its-connectors-default-for-new-connections.md): **Use when:** caller wants `verlon connect` (and other connector setup flows) to resolve to this gate when no gate is named — the interactive picker pre-highlights it and non-interactive connects use it outright - [Stop this gate being its connector's default](https://docs.verlon.ai/api-reference/gates/stop-this-gate-being-its-connectors-default.md): **Use when:** caller wants new connections to go back to asking (or creating) instead of resolving to this gate - [Check what depends on a gate (before deletion)](https://docs.verlon.ai/api-reference/gates/check-what-depends-on-a-gate-before-deletion.md): **Use when:** caller is about to delete a gate and wants a preview of what depends on it (sub-gate attachments, agent gates that reference it) to avoid breaking other routes - [Duplicate an existing gate](https://docs.verlon.ai/api-reference/gates/duplicate-an-existing-gate.md): **Use when:** caller wants to clone an existing gate with a new name (template-like reuse, A/B variants, etc.) - [Export a single gate config as a portable JSON document](https://docs.verlon.ai/api-reference/gates/export-a-single-gate-config-as-a-portable-json-document.md): **Use when:** caller wants a downloadable snapshot of one gate’s configuration by id - [List configuration history for a specific gate](https://docs.verlon.ai/api-reference/gates/list-configuration-history-for-a-specific-gate.md): **Use when:** caller wants to see the configuration change timeline for one specific gate - [Pin or unpin a gate's BYOK key](https://docs.verlon.ai/api-reference/gates/pin-or-unpin-a-gates-byok-key.md): **Use when:** caller wants this gate to serve on a specific BYOK key instead of the provider default (or to clear that pin) - [Restore a soft-deleted gate from the trash](https://docs.verlon.ai/api-reference/gates/restore-a-soft-deleted-gate-from-the-trash.md): **Use when:** caller wants to restore a soft-deleted gate from the trash before its 30-day window expires - [Roll a gate back to a previous configuration](https://docs.verlon.ai/api-reference/gates/roll-a-gate-back-to-a-previous-configuration.md): **Use when:** caller wants to revert a gate to a previous configuration version (recovering from a bad change, etc.) - [List an agent gate's tasks](https://docs.verlon.ai/api-reference/gates/list-an-agent-gates-tasks.md): **Use when:** caller wants the agent gate's declared and traffic-discovered tasks (named LLM call sites) — the dashboard Tasks table and the SDK's boot-time validation both read this - [Declare a task on an agent gate](https://docs.verlon.ai/api-reference/gates/declare-a-task-on-an-agent-gate.md): **Use when:** caller wants to declare a named LLM call site on an agent gate, optionally pinning a model or delegating to an existing gate - [Delete a task](https://docs.verlon.ai/api-reference/gates/delete-a-task.md): **Use when:** caller wants to remove a declared or discovered task from an agent gate; calls using its name fall back to pass-through - [Update a task's config](https://docs.verlon.ai/api-reference/gates/update-a-tasks-config.md): **Use when:** caller wants to change a task's model pin or gate binding — the remote-control action for one call site - [List activity-log entries across every gate owned by the caller](https://docs.verlon.ai/api-reference/gates/list-activity-log-entries-across-every-gate-owned-by-the-caller.md): **Use when:** caller wants to inspect human/system activity across every gate (who changed what, including non-config events) - [Export every gate config as a portable JSON document](https://docs.verlon.ai/api-reference/gates/export-every-gate-config-as-a-portable-json-document.md): **Use when:** caller wants a downloadable snapshot of all their gate/routing configuration — e.g. for backup or to migrate off the platform - [List configuration history across every gate owned by the caller](https://docs.verlon.ai/api-reference/gates/list-configuration-history-across-every-gate-owned-by-the-caller.md): **Use when:** caller wants to inspect configuration change history across every gate (cross-gate audit trail, change log) - [Per-gate trace stats for every gate owned by the caller (batch)](https://docs.verlon.ai/api-reference/gates/per-gate-trace-stats-for-every-gate-owned-by-the-caller-batch.md): **Use when:** caller wants per-gate trace statistics (counts, activity, cost) for the whole inventory in one call — powers the agent-gates list without N+1 fetches - [Get a gate by its name](https://docs.verlon.ai/api-reference/gates/get-a-gate-by-its-name.md): **Use when:** caller has a human-readable gate name (not id) and needs to resolve it to the full gate configuration - [List OpenClaw-tagged gates with analytics](https://docs.verlon.ai/api-reference/gates/list-openclaw-tagged-gates-with-analytics.md): **Use when:** caller is integrating with OpenClaw and needs to enumerate gates tagged for OpenClaw with their analytics summary attached - [Get The Architect's model + config suggestions for a gate](https://docs.verlon.ai/api-reference/gates/get-the-architects-model-+-config-suggestions-for-a-gate.md): **Use when:** caller wants The Architect to analyze recent traffic for a gate and suggest model or configuration changes that would improve cost or quality - [Test a gate configuration with a sample request](https://docs.verlon.ai/api-reference/gates/test-a-gate-configuration-with-a-sample-request.md): **Use when:** caller wants to send a sample request through a gate (production or draft) to verify routing, parameter handling, and output without leaving an audit trail - [List soft-deleted (trashed) gates](https://docs.verlon.ai/api-reference/gates/list-soft-deleted-trashed-gates.md): **Use when:** caller wants to see soft-deleted gates that can still be restored (within the 30-day trash window) - [Anthropic-format messages](https://docs.verlon.ai/api-reference/anthropic-format/anthropic-format-messages.md): **Use when:** caller has an existing Anthropic SDK Messages-API flow and wants to route through Verlon with zero code changes via baseURL swap - [Anthropic-format token counting](https://docs.verlon.ai/api-reference/anthropic-format/anthropic-format-token-counting.md): **Use when:** caller uses the Anthropic SDK count_tokens flow (or an agentic client like Claude Code) against the Verlon drop-in endpoint - [List available models (drop-in)](https://docs.verlon.ai/api-reference/openai-compat/list-available-models-drop-in.md): **Use when:** caller wants to discover which model ids serve, via an existing OpenAI or Anthropic SDK `models.list()` call - [Retrieve a model (drop-in)](https://docs.verlon.ai/api-reference/openai-compat/retrieve-a-model-drop-in.md): **Use when:** caller wants to confirm a single model id serves, via an existing OpenAI or Anthropic SDK `models.retrieve()` call - [Start an OAuth device authorization flow (RFC 8628 §3.1)](https://docs.verlon.ai/api-reference/oauth/start-an-oauth-device-authorization-flow-rfc-8628-§31.md): **Use when:** caller is a CLI / IDE plugin / MCP server starting a device-flow login — server returns a device_code (long, opaque) + user_code (short, human-typeable) plus the verification URL where the user lands to approve - [Poll a device-flow for completion (RFC 8628 §3.4)](https://docs.verlon.ai/api-reference/oauth/poll-a-device-flow-for-completion-rfc-8628-§34.md): **Use when:** caller (typically a CLI) is polling for the user to approve the device-code flow it started — returns the access_token + refresh_token once approved, or a structured error code (authorization_pending / slow_down / expired_token / access_denied) while still pending - [Exchange a refresh token for a fresh access + refresh pair](https://docs.verlon.ai/api-reference/oauth/exchange-a-refresh-token-for-a-fresh-access-+-refresh-pair.md): **Use when:** caller's access token has expired (or is about to) and they need a new pair — supplying their refresh_token in exchange - [List the caller's owned-model registrations](https://docs.verlon.ai/api-reference/owned-models/list-the-callers-owned-model-registrations.md): **Use when:** caller wants the models they registered as their own (fine-tunes, custom deployments) — the "Your own models" section - [Register a model the caller owns](https://docs.verlon.ai/api-reference/owned-models/register-a-model-the-caller-owns.md): **Use when:** caller registers a fine-tune or custom deployment as an owned model, with its own credential and declared pricing - [Delete an owned-model registration](https://docs.verlon.ai/api-reference/owned-models/delete-an-owned-model-registration.md): **Use when:** caller removes an owned model they no longer serve - [Update an owned-model registration](https://docs.verlon.ai/api-reference/owned-models/update-an-owned-model-registration.md): **Use when:** caller rotates the credential, corrects the upstream model id, or adjusts declared pricing on an owned model - [Get the public model + provider registry](https://docs.verlon.ai/api-reference/registry/get-the-public-model-+-provider-registry.md): **Use when:** caller wants Verlon's canonical list of supported models, providers, capabilities, pricing, and deprecation status (no auth required; cacheable) - [List the caller's model working set](https://docs.verlon.ai/api-reference/user-models/list-the-callers-model-working-set.md): **Use when:** caller wants the models the user actually works with — models any of their gates route to (in use) plus models they pinned from the catalog (added) - [Pin a catalog model to the working set](https://docs.verlon.ai/api-reference/user-models/pin-a-catalog-model-to-the-working-set.md): **Use when:** caller clicked "Add" on a catalog model so it shows in their working set before any gate uses it - [Unpin a model from the working set](https://docs.verlon.ai/api-reference/user-models/unpin-a-model-from-the-working-set.md): **Use when:** caller removes a manually-added model from their working set (models in use by gates are not removable here — change the gates instead) - [Per-model usage stats from the caller's own traffic](https://docs.verlon.ai/api-reference/user-models/per-model-usage-stats-from-the-callers-own-traffic.md): **Use when:** caller wants observed per-model evidence — 7-day token volume, median latency, effective throughput — computed from their own request history (e.g. the model catalog usage columns) - [Identify the authenticated principal](https://docs.verlon.ai/api-reference/user/identify-the-authenticated-principal.md): **Use when:** caller wants a minimal "who am I" snapshot — typically a CLI / agent confirming the API key it loaded resolves to the expected Verlon account and tier - [Gemini-format token counting](https://docs.verlon.ai/api-reference/google-format/gemini-format-token-counting.md): **Use when:** caller uses the Gemini SDK countTokens flow against the Verlon drop-in endpoint - [Gemini-format content generation](https://docs.verlon.ai/api-reference/google-format/gemini-format-content-generation.md): **Use when:** caller has an existing Google Gemini SDK generateContent flow and wants to route through Verlon with zero code changes via a baseUrl swap - [Gemini-format streaming content generation](https://docs.verlon.ai/api-reference/google-format/gemini-format-streaming-content-generation.md): **Use when:** caller wants a streamed Gemini generateContent response routed through a Verlon gate - [Extract text from an image or PDF via a Verlon gate](https://docs.verlon.ai/api-reference/ocr/extract-text-from-an-image-or-pdf-via-a-verlon-gate.md): **Use when:** caller has an image or PDF and wants the extracted text (structured OCR) routed through a Verlon gate - [List agent traces](https://docs.verlon.ai/api-reference/traces/list-agent-traces.md): **Use when:** caller wants to browse recorded agent runs (traces), optionally filtered to one agent gate, a status, or a session label - [Get one trace with its spans and derived agent view](https://docs.verlon.ai/api-reference/traces/get-one-trace-with-its-spans-and-derived-agent-view.md): **Use when:** caller wants the full record of one agent run: every span plus the derived agent-view projection (ordering, nesting depth, evidenced tool executions, coverage accounting) - [List coding sessions for a connector gate (beta)](https://docs.verlon.ai/api-reference/traces/list-coding-sessions-for-a-connector-gate-beta.md): **Use when:** the dashboard coding-agents lens lists gateway sessions for one connector gate, with display names, turn/call counts, and cost - [Rename a coding session (beta)](https://docs.verlon.ai/api-reference/traces/rename-a-coding-session-beta.md): **Use when:** the user renames a session in the coding-agents lens; the name pins over any client-derived title - [Get coding-gate overview stats (beta)](https://docs.verlon.ai/api-reference/traces/get-coding-gate-overview-stats-beta.md): **Use when:** the dashboard coding-agents Overview renders spend, session counts, and model/task mix for one connector gate over a chosen window - [Get a coding session as a turn timeline (beta)](https://docs.verlon.ai/api-reference/traces/get-a-coding-session-as-a-turn-timeline-beta.md): **Use when:** the dashboard session detail renders one gateway session as turns (idle-bounded traces) with their calls - [List sessions (conversation-label rollups)](https://docs.verlon.ai/api-reference/traces/list-sessions-conversation-label-rollups.md): **Use when:** caller wants the multi-turn view: traces grouped by their session label (conversation id), with per-session trace counts and cost - [Current unit usage against the plan ceiling](https://docs.verlon.ai/api-reference/usage/current-unit-usage-against-the-plan-ceiling.md): **Use when:** caller wants the account-level unit meter — units consumed this billing period and over the rolling 30 days, against the plan allowance - [Generate a video via a Verlon gate](https://docs.verlon.ai/api-reference/video/generate-a-video-via-a-verlon-gate.md): **Use when:** caller wants to generate a video clip from a prompt or seed image routed through a Verlon gate (Sora, Runway, Veo, etc., resolved by the gate) - [Contributing Guide](https://docs.verlon.ai/contributing/getting-started.md): How to contribute to Verlon AI - [Architecture Overview](https://docs.verlon.ai/contributing/architecture.md): Understanding Verlon AI's architecture - [SDK Package](https://docs.verlon.ai/contributing/packages/sdk.md): Contributing to the Verlon AI SDK package (@verlon-ai/sdk) - [CLI Package](https://docs.verlon.ai/contributing/packages/cli.md): Contributing to the Verlon AI CLI - [Admin Package](https://docs.verlon.ai/contributing/packages/admin.md): Contributing to the Verlon AI admin SDK ## OpenAPI Specs - [openapi](/api-reference/openapi.json)