Provider recipes
One complete providers[] entry per vendor, ready to copy into a deployment
document and edit. A recipe is a starting point. The saved document carries the
whole entry, nothing in it refers back to the recipe, and the gateway reads no
recipe at runtime, so a vendor moving an endpoint is an edit to your document
like any other.
Every entry spells its credential as a ${secret:NAME} reference, resolved from
a file, the environment or the secret store, in that order. Replace the models
list with the names your callers ask for.
The console offers the same list under New provider, and
GET /admin/v1/recipes/providers serves it as JSON with the YAML beside each
decoded entry. All three read one embedded file, and this page is generated
from it.
A vendor that serves both dialects has two recipes, one per surface. Declare both and a request goes to the one that speaks its dialect, passed through byte for byte; declare one and a request in the other dialect is translated to it. Fidelity covers what that costs.
| recipe | vendor | dialect | endpoint |
|---|---|---|---|
anthropic |
Anthropic | anthropic |
https://api.anthropic.com |
anthropic-openai |
Anthropic, OpenAI-compatible surface | openai |
https://api.anthropic.com |
azure-openai |
Azure OpenAI | openai |
https://YOUR-RESOURCE-NAME.openai.azure.com/openai |
bedrock |
Amazon Bedrock Mantle, Anthropic models | anthropic |
https://bedrock-mantle.us-east-1.api.aws/anthropic |
bedrock-openai |
Amazon Bedrock, OpenAI-compatible models | openai |
https://bedrock-mantle.us-east-1.api.aws |
bedrock-runtime |
Amazon Bedrock runtime, Anthropic models | anthropic |
https://bedrock-runtime.us-east-1.amazonaws.com/anthropic |
cerebras |
Cerebras | openai |
https://api.cerebras.ai |
deepseek |
DeepSeek | openai |
https://api.deepseek.com |
fireworks |
Fireworks | openai |
https://api.fireworks.ai/inference |
gemini |
Google Gemini | openai |
https://generativelanguage.googleapis.com/v1beta/openai |
groq |
Groq | openai |
https://api.groq.com/openai |
mistral |
Mistral | openai |
https://api.mistral.ai |
openai |
OpenAI | openai |
https://api.openai.com |
openrouter |
OpenRouter | openai |
https://openrouter.ai/api |
perplexity |
Perplexity | openai |
https://api.perplexity.ai |
together |
Together | openai |
https://api.together.xyz |
xai |
xAI | openai |
https://api.x.ai |
Anthropic
Section titled “Anthropic”The anthropic recipe, documented at https://docs.anthropic.com/en/api:
providers: - name: anthropic dialect: anthropic base_url: https://api.anthropic.com api_key: ${secret:ANTHROPIC_API_KEY} models: ["claude-*"]Anthropic, OpenAI-compatible surface
Section titled “Anthropic, OpenAI-compatible surface”Anthropic’s own translation of the Chat Completions API. Anthropic documents it as a migration aid rather than a production surface: strict tools, response formats, prompt caching, extended thinking and audio input are dropped, and usage reports no detail splits. An OpenAI-dialect client reaching Claude through the anthropic recipe goes through the gateway’s own translator instead, which keeps strict tools, structured output and thinking and refuses what it cannot carry.
The anthropic-openai recipe, documented at https://platform.claude.com/docs/en/api/openai-sdk:
providers: - name: anthropic-openai dialect: openai base_url: https://api.anthropic.com api_key: ${secret:ANTHROPIC_API_KEY} models: ["claude-*"]Azure OpenAI
Section titled “Azure OpenAI”The v1 API, served under /openai/v1 in the OpenAI request shape with no api-version parameter. Replace YOUR-RESOURCE-NAME with the resource name. A request’s model is a deployment name, so models lists the deployment names your callers ask for. The key is sent as a bearer token, the way OpenAI’s own client sends it to this API. For Microsoft Entra ID, name an oauth credential instead; the custom provider how-to has the entry.
The azure-openai recipe, documented at https://learn.microsoft.com/en-us/azure/foundry/openai/api-version-lifecycle:
providers: - name: azure-openai dialect: openai base_url: https://YOUR-RESOURCE-NAME.openai.azure.com/openai api_key: ${secret:AZURE_OPENAI_API_KEY} models: ["gpt-*", "o3*", "o4*"]Amazon Bedrock Mantle, Anthropic models
Section titled “Amazon Bedrock Mantle, Anthropic models”Bedrock Mantle serves the Anthropic Messages API under the /anthropic path, with Bedrock API keys and Workspaces. AWS recommends the bedrock-runtime recipe for new applications. Mantle also serves count_tokens, the only token-counting path for Claude models offered cross-Region only. Replace us-east-1 with your region. The key is a Bedrock API key; for SigV4 signing, name an aws credential instead and set region to the signing region.
The bedrock recipe, documented at https://docs.aws.amazon.com/bedrock/latest/userguide/inference-messages-api.html:
providers: - name: bedrock dialect: anthropic base_url: https://bedrock-mantle.us-east-1.api.aws/anthropic api_key: ${secret:AWS_BEARER_TOKEN_BEDROCK} models: ["anthropic.claude*"]Amazon Bedrock, OpenAI-compatible models
Section titled “Amazon Bedrock, OpenAI-compatible models”Bedrock Mantle’s Chat Completions surface, for the model families it serves that way. Replace us-east-1 with your region.
The bedrock-openai recipe, documented at https://docs.aws.amazon.com/bedrock/latest/userguide/inference-chat-completions-mantle.html:
providers: - name: bedrock-openai dialect: openai base_url: https://bedrock-mantle.us-east-1.api.aws api_key: ${secret:AWS_BEARER_TOKEN_BEDROCK} models: ["openai.gpt-oss*", "minimax.*"]Amazon Bedrock runtime, Anthropic models
Section titled “Amazon Bedrock runtime, Anthropic models”The endpoint AWS recommends for new applications. It serves the Anthropic Messages API under /anthropic, with IAM and invocation logging. Replace us-east-1 with your region. The key is a Bedrock API key or a short-term Bedrock bearer token. Model IDs carry the inference profile prefix, such as us. or global., where a model is served cross-Region.
The bedrock-runtime recipe, documented at https://docs.aws.amazon.com/bedrock/latest/userguide/inference-messages-api.html:
providers: - name: bedrock-runtime dialect: anthropic base_url: https://bedrock-runtime.us-east-1.amazonaws.com/anthropic api_key: ${secret:AWS_BEARER_TOKEN_BEDROCK} models: ["anthropic.claude*", "us.anthropic.claude*", "eu.anthropic.claude*", "global.anthropic.claude*"]Cerebras
Section titled “Cerebras”The cerebras recipe, documented at https://inference-docs.cerebras.ai:
providers: - name: cerebras dialect: openai base_url: https://api.cerebras.ai api_key: ${secret:CEREBRAS_API_KEY} models: ["llama*", "qwen*"]DeepSeek
Section titled “DeepSeek”The deepseek recipe, documented at https://api-docs.deepseek.com:
providers: - name: deepseek dialect: openai base_url: https://api.deepseek.com api_key: ${secret:DEEPSEEK_API_KEY} models: ["deepseek-*"]Fireworks
Section titled “Fireworks”The fireworks recipe, documented at https://docs.fireworks.ai/api-reference:
providers: - name: fireworks dialect: openai base_url: https://api.fireworks.ai/inference api_key: ${secret:FIREWORKS_API_KEY} models: ["accounts/fireworks/*"]Google Gemini
Section titled “Google Gemini”Google’s OpenAI-compatible endpoint is served under /v1beta/openai and takes /chat/completions without the /v1 prefix, which strip_path_prefix removes from the incoming path.
The gemini recipe, documented at https://ai.google.dev/gemini-api/docs/openai:
providers: - name: gemini dialect: openai base_url: https://generativelanguage.googleapis.com/v1beta/openai strip_path_prefix: /v1 api_key: ${secret:GEMINI_API_KEY} models: ["gemini-*"]Groq rejects three Chat Completions fields rather than ignoring them, so they are removed from every request on the way out.
The groq recipe, documented at https://console.groq.com/docs/openai:
providers: - name: groq dialect: openai base_url: https://api.groq.com/openai remove_request_fields: [logit_bias, logprobs, top_logprobs] api_key: ${secret:GROQ_API_KEY} models: ["llama*", "mixtral*", "gemma*"]Mistral
Section titled “Mistral”The mistral recipe, documented at https://docs.mistral.ai/api:
providers: - name: mistral dialect: openai base_url: https://api.mistral.ai api_key: ${secret:MISTRAL_API_KEY} models: ["mistral-*", "codestral-*", "magistral-*"]OpenAI
Section titled “OpenAI”The openai recipe, documented at https://platform.openai.com/docs/api-reference:
providers: - name: openai dialect: openai base_url: https://api.openai.com api_key: ${secret:OPENAI_API_KEY} models: ["gpt-*", "o1*", "o3*", "o4*"]OpenRouter
Section titled “OpenRouter”The openrouter recipe, documented at https://openrouter.ai/docs:
providers: - name: openrouter dialect: openai base_url: https://openrouter.ai/api api_key: ${secret:OPENROUTER_API_KEY} models: ["*"]Perplexity
Section titled “Perplexity”Perplexity serves /chat/completions at the root of its host, without the /v1 prefix.
The perplexity recipe, documented at https://docs.perplexity.ai/api-reference:
providers: - name: perplexity dialect: openai base_url: https://api.perplexity.ai strip_path_prefix: /v1 api_key: ${secret:PERPLEXITY_API_KEY} models: ["sonar*"]Together
Section titled “Together”The together recipe, documented at https://docs.together.ai/reference:
providers: - name: together dialect: openai base_url: https://api.together.xyz api_key: ${secret:TOGETHER_API_KEY} models: ["meta-llama/*", "Qwen/*", "deepseek-ai/*"]The xai recipe, documented at https://docs.x.ai/api:
providers: - name: xai dialect: openai base_url: https://api.x.ai api_key: ${secret:XAI_API_KEY} models: ["grok-*"]