Skip to main content
All providers are configured under providers in config.json. Each provider entry contains a keys array where every key has a name, value, models, and weight, plus optional provider-specific config objects.
In DB-backed deployments, provider entries from config.json are reconciled into the config store at startup. The default source_of_truth: "split" mode preserves UI/API edits while matching file-backed providers are unchanged. With source_of_truth: "config.json", a present providers section is authoritative and prunes DB-only providers or keys. See Source of Truth & Reconciliation.
Supplying credentials: Use the env. prefix to reference environment variables - never put API keys directly in config.json:

Common Provider Fields

Every key object supports these fields: Per-provider network_config options (applies to all standard providers): Concurrency and buffering per provider:

OpenAI

Supports multiple keys with weighted load balancing. Mark one key with use_for_batch_api: true to designate it for the Batch API.

Proxy Configuration

Route provider traffic through an HTTP or SOCKS5 proxy:
Use "type": "environment" to pick up HTTP_PROXY / HTTPS_PROXY env vars automatically.

Multi-Provider Example

With three providers and the weights above, traffic is distributed: 50% OpenAI, 25% Anthropic, 25% Groq. If any provider returns an error, Bifrost automatically retries on the next key or provider.