Skip to content

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

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’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-*"]

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*"]

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*"]

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.*"]

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*"]

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*"]

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-*"]

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’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*"]

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-*"]

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*"]

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 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*"]

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-*"]