Provider catalogue¶
The Providers page tells you how to add an upstream: the form, the auth toggle, the discovery button. This catalogue tells you what to put in those fields for each specific provider, with a link to where to grab the API key.
The Add Provider picker groups presets three ways. Whichever you pick, the form pre-fills the endpoint, the model-name prefixes, and any preset-specific fields (region, project, deployment). You only need to paste your credential.
| Category | Who's in it | Maturity |
|---|---|---|
| Popular | Direct API-key providers most teams reach for first: OpenAI, Anthropic, Gemini, plus the OpenAI-compatible aggregators (OpenRouter, Groq, Together, Mistral, Fireworks, etc.) | All GA |
| Cloud | Cloud-managed alternatives that route through a hyperscaler: Azure OpenAI, AWS Bedrock, Google Vertex AI | Azure GA · Bedrock + Vertex alpha |
| Local / self-hosted | On-prem and dev-loop endpoints: Ollama and the Custom catch-all | All GA |
If your provider isn't on the list, Custom / Self-Hosted is the catch-all: the same form, just no preset to seed it.
Popular: direct API providers¶
OpenAI¶
The reference upstream. The control plane speaks OpenAI's chat-completions schema natively, so OpenAI traffic is effectively passthrough; request and response bodies move verbatim (only the auth header is rewritten).
| Field | Value |
|---|---|
| Preset label | OpenAI |
| Endpoint (auto-filled) | https://api.openai.com/v1 |
| Required fields | Name, API key |
| API key portal | platform.openai.com/api-keys |
| API key prefix | sk-… |
| Model name prefixes | gpt-, o1-, o3-, o4-, chatgpt- |
| Discovery | ✅ Yes. Sync Models pulls the live list. |
| Translation | None (native). |
| Pairs naturally with | OpenAI Python SDK |
Anthropic¶
Native Claude support. Anthropic-shaped requests pass through verbatim (auth swap only). OpenAI SDK callers reach Anthropic via forward translation; Anthropic SDK callers reach OpenAI / Gemini via reverse translation (REQ-007, 0.7.5+).
| Field | Value |
|---|---|
| Preset label | Anthropic |
| Endpoint (auto-filled) | https://api.anthropic.com |
| Required fields | Name, API key |
| API key portal | console.anthropic.com/settings/keys |
| API key prefix | sk-ant-… |
| Model name prefixes | claude- |
| Discovery | Manual. Register the models you want; Anthropic doesn't expose a list endpoint. |
| Translation | OpenAI ↔ Anthropic both directions. |
| Pairs naturally with | Anthropic Python SDK |
📌 Worth knowing. Claude requires
max_tokenson every request. When OpenAI-SDK callers don't set one, the control plane defaults to 4096. Usually fine; worth knowing if your application expected unlimited.
Google Gemini¶
Google AI Studio's direct Gemini endpoint: API key based, no GCP project / IAM setup needed. (For IAM-based access via Google Cloud, see Google Vertex AI below.)
| Field | Value |
|---|---|
| Preset label | Google Gemini |
| Endpoint (auto-filled) | https://generativelanguage.googleapis.com/v1beta |
| Required fields | Name, API key |
| API key portal | aistudio.google.com/app/apikey |
| API key prefix | AIza… |
| Model name prefixes | gemini- |
| Discovery | ✅ Yes. |
| Translation | OpenAI ↔ Gemini both directions. |
| Pairs naturally with | google-genai SDK |
DeepSeek¶
OpenAI-compatible endpoint for DeepSeek's R1 / V3 family.
| Field | Value |
|---|---|
| Preset label | DeepSeek |
| Endpoint (auto-filled) | https://api.deepseek.com/v1 |
| Required fields | Name, API key |
| API key portal | platform.deepseek.com/api_keys |
| API key prefix | sk-… |
| Model name prefixes | deepseek- |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
OpenRouter¶
A multi-provider aggregator: one key, 100+ models, OpenRouter routes by model name. Useful for breadth without managing multiple credentials, at the cost of an extra hop.
| Field | Value |
|---|---|
| Preset label | OpenRouter |
| Endpoint (auto-filled) | https://openrouter.ai/api/v1 |
| Required fields | Name, API key |
| API key portal | openrouter.ai/keys |
| API key prefix | sk-or-… |
| Model name prefixes | (none. OpenRouter routes by model name internally) |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
📌 Worth knowing. Model prefixes are intentionally empty for this preset. OpenRouter's model names are already namespaced (e.g.
anthropic/claude-haiku-4-5) so the control plane doesn't add another layer.
Groq¶
Fast inference on Llama, Mixtral, Gemma, Whisper.
| Field | Value |
|---|---|
| Preset label | Groq |
| Endpoint (auto-filled) | https://api.groq.com/openai/v1 |
| Required fields | Name, API key |
| API key portal | console.groq.com/keys |
| API key prefix | gsk_… |
| Model name prefixes | llama-, mixtral-, gemma-, whisper- |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
Together AI¶
Open-model hosting (Llama, Mistral, Qwen, etc.).
| Field | Value |
|---|---|
| Preset label | Together AI |
| Endpoint (auto-filled) | https://api.together.xyz/v1 |
| Required fields | Name, API key |
| API key portal | api.together.xyz/settings/api-keys |
| Model name prefixes | (none) |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
Mistral AI¶
Mistral's hosted endpoint for the Mistral / Codestral / Mixtral family.
| Field | Value |
|---|---|
| Preset label | Mistral AI |
| Endpoint (auto-filled) | https://api.mistral.ai/v1 |
| Required fields | Name, API key |
| API key portal | console.mistral.ai/api-keys |
| Model name prefixes | mistral-, codestral-, open-mistral-, open-mixtral- |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
xAI (Grok)¶
| Field | Value |
|---|---|
| Preset label | xAI (Grok) |
| Endpoint (auto-filled) | https://api.x.ai/v1 |
| Required fields | Name, API key |
| API key portal | console.x.ai |
| Model name prefixes | grok- |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
Qwen (Alibaba)¶
Alibaba DashScope's OpenAI-compatible endpoint for Qwen models.
| Field | Value |
|---|---|
| Preset label | Qwen (Alibaba) |
| Endpoint (auto-filled) | https://dashscope.aliyuncs.com/compatible-mode/v1 |
| Required fields | Name, API key |
| API key portal | dashscope.console.aliyun.com/apiKey |
| Model name prefixes | qwen- |
| Discovery | Manual. |
| Pairs naturally with | OpenAI Python SDK |
Fireworks AI¶
| Field | Value |
|---|---|
| Preset label | Fireworks AI |
| Endpoint (auto-filled) | https://api.fireworks.ai/inference/v1 |
| Required fields | Name, API key |
| API key portal | fireworks.ai/api-keys |
| Model name prefixes | accounts/fireworks/ |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
Perplexity¶
Perplexity's Sonar models.
| Field | Value |
|---|---|
| Preset label | Perplexity |
| Endpoint (auto-filled) | https://api.perplexity.ai |
| Required fields | Name, API key |
| API key portal | perplexity.ai/settings/api |
| API key prefix | pplx-… |
| Model name prefixes | sonar- |
| Discovery | Manual. |
| Pairs naturally with | OpenAI Python SDK |
Anyscale¶
| Field | Value |
|---|---|
| Preset label | Anyscale |
| Endpoint (auto-filled) | https://api.endpoints.anyscale.com/v1 |
| Required fields | Name, API key |
| API key portal | app.endpoints.anyscale.com/credentials |
| Model name prefixes | (none) |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
Cloud: managed via a hyperscaler¶
These three need cloud-managed credentials (Azure key + endpoint, AWS IAM, GCP service account JSON) instead of a simple API key. The form switches to the right field set when you pick the preset.
Azure OpenAI¶
Azure binds each model to a deployment name you create in the Azure portal. One control plane provider entry = one deployment. For multiple models on Azure, add multiple providers.
| Field | Value |
|---|---|
| Preset label | Azure OpenAI |
| Endpoint | Per-deployment: copy from the Azure portal (e.g. https://YOUR-RESOURCE.openai.azure.com) |
| Required fields | Name, Endpoint, API key, API version |
| API key portal | Azure Portal → your OpenAI Resource → Keys and Endpoint |
| Default API version | 2024-10-21 (override on the form if needed) |
| Discovery | Manual. Azure deployments aren't listed via discovery. Register the deployment names. |
| Pairs naturally with | OpenAI Python SDK |
📌 Worth knowing. Your client sends the deployment name as the model parameter (e.g.
my-gpt4o-deploy), not the underlying model name (gpt-4o). Register deployment names in Models accordingly.
AWS Bedrock¶
Bedrock hosts multiple model families. Claude on Bedrock is production-quality (Anthropic's wire format natively); Llama, Mistral, Cohere, Titan are alpha (limited streaming support).
| Field | Value |
|---|---|
| Preset label | AWS Bedrock |
| Endpoint | Auto-built from region: https://bedrock-runtime.<region>.amazonaws.com |
| Required fields | Name, AWS region, AWS access key ID, AWS secret access key (or leave empty to inherit env vars on Docker / EC2 / ECS) |
| Default region | us-east-1 |
| Required IAM permissions | bedrock:InvokeModel, bedrock:InvokeModelWithResponseStream |
| Discovery | Manual. Bedrock doesn't expose a list endpoint. |
| Maturity | Alpha overall (Claude path GA-quality) |
| Pairs naturally with | Anthropic Python SDK for Claude; OpenAI Python SDK via translation |
📌 Worth knowing. Enable each Claude model in the Bedrock Model access page before you try to register it. Otherwise calls fail with an access-denied error from Bedrock.
Bedrock model IDs follow AWS conventions (
anthropic.claude-haiku-4-5-20251005,meta.llama3-70b-…). Use the AWS-style IDs when registering models.
Google Vertex AI¶
Vertex serves Gemini models with GCP-managed credentials. Use this when your organisation requires service-account-based auth instead of API keys.
| Field | Value |
|---|---|
| Preset label | Google Vertex AI |
| Endpoint | Auto-built from project + location: https://<location>-aiplatform.googleapis.com/v1/projects/<project>/locations/<location>/publishers/google/models |
| Required fields | Name, GCP project, GCP location, API key field (see auth options below) |
| Default location | us-central1 |
| Auth options (paste into "API key" field, or leave empty) | • Service account JSON: paste the full JSON contents • OAuth2 token: gcloud auth print-access-token (1-hour expiry) • Empty: the control plane uses GOOGLE_APPLICATION_CREDENTIALS env var |
| Discovery | Manual. Register Gemini models you'll use. |
| Maturity | Alpha |
| Pairs naturally with | google-genai SDK with vertexai=True |
⚠️ Watch out. Anthropic on Vertex (Claude on Vertex) isn't supported by this preset. If you need Claude with Google-managed credentials, contact support; the Vertex AI Anthropic route requires a separate provider type.
Local / self-hosted¶
Ollama¶
Ollama runs locally and exposes an OpenAI-compatible endpoint
on /v1. Useful for dev loops or offline testing.
| Field | Value |
|---|---|
| Preset label | Ollama |
| Endpoint (auto-filled) | http://localhost:11434/v1 |
| Required fields | Name, Endpoint (if Ollama is on a different host) |
| API key | Not required by default. Leave empty unless you've configured Ollama's auth. |
| Discovery | ✅ Yes. |
| Pairs naturally with | OpenAI Python SDK |
⚠️ Watch out. The control plane needs to be able to reach the Ollama URL. When the control plane runs in Docker,
localhostresolves to the container, not the host. Usehttp://host.docker.internal:11434/v1instead, or expose Ollama on the network and use its host IP.
Custom / Self-Hosted¶
The catch-all for any OpenAI-compatible (or specialty) endpoint not on the preset list: vLLM, LocalAI, LiteLLM-as-a-service, on-prem llama-cpp, internal model servers.
| Field | Value |
|---|---|
| Preset label | Custom / Self-Hosted |
| Endpoint | Whatever your server exposes |
| Required fields | Name, Endpoint, API key (optional), Protocol (openai / anthropic / gemini / azure / bedrock / vertex) |
| Discovery | Configurable per-provider; toggle on if your server exposes a list endpoint. |
| Pairs naturally with | Any SDK that matches your chosen protocol |
💡 Pro tip. Most "second-tier" providers that don't have a preset (Cohere, Replicate, AI21, Hugging Face's TGI, etc.) speak OpenAI-compatible HTTP. Pick this preset, paste the base URL ending in
/v1, paste the key.
How translation works (the short version)¶
You don't configure translation. The control plane detects the client SDK format from the URL path and translates only when client format differs from provider format. Specifically:
| If your client speaks… | …and the provider is… | …then |
|---|---|---|
| OpenAI | OpenAI / Azure / OpenAI-compatible / Ollama | Direct connection, passthrough. |
| OpenAI | Anthropic / Bedrock-Claude | Forward translation: OpenAI → Anthropic. |
| OpenAI | Gemini / Vertex | Forward translation: OpenAI → Gemini. |
| Anthropic | Anthropic / Bedrock-Claude / Vertex-Anthropic | Native passthrough. |
| Anthropic | OpenAI / Azure / Gemini / Vertex | Reverse translation (REQ-007, 0.7.5+). |
| Gemini | Gemini / Vertex-Gemini | Native passthrough. |
| Gemini | OpenAI / Azure / Anthropic | Translation via the OpenAI pivot. |
You can see which path actually fired for any request in the
x-vidai-* response headers and in
Request Logs → request detail → upstream
call section.
Where to go next¶
- Providers: the page-level walkthrough for adding, editing, rotating provider keys, and running discovery.
- Models: once a provider is added, this is where you confirm models are discovered (or register them manually) and set per-model overrides.
- Cost Engine → Rate Cards: confirm pricing is set up for the models your new provider serves.
- Client integrations: how applications point at the control plane. Each provider's catalogue entry above includes the SDK guide that pairs naturally with it.
- Routing and headers:
what the
x-vidai-*response headers tell you about which provider actually served a request.