> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wardin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Providers

> Supported LLM providers and how model routing works.

Wardin routes requests to the correct provider based on the model name in the request. You don't need to change the endpoint — just use the model name.

## Supported providers

| Provider               | Models                                 | Protocol                |
| ---------------------- | -------------------------------------- | ----------------------- |
| Anthropic              | `claude-*`                             | Anthropic Messages API  |
| OpenAI                 | `gpt-*`, `o1-*`, `o3-*`                | OpenAI Chat Completions |
| AWS Bedrock            | `anthropic.claude-*`, `amazon.titan-*` | Bedrock Runtime         |
| Google Vertex / Gemini | `gemini-*`                             | Vertex AI               |

## Model routing

The gateway resolves `model` → `provider` automatically:

```
"claude-opus-4-8"           → Anthropic
"gpt-4o"                    → OpenAI
"anthropic.claude-3-5-sonnet" → AWS Bedrock
"gemini-1.5-pro"            → Google Vertex
```

Routing is by model name only — there is no per-request provider override header. To target a specific provider, use one of its model names.

## Provider credentials

Provider credentials are stored encrypted (AES-256-GCM) in Wardin's control plane, never in client code. Connect, test, rotate, or disconnect them in **Console → Providers**:

* **Anthropic**: API key
* **OpenAI**: API key
* **AWS Bedrock**: Access key ID + secret access key + region
* **Google Vertex**: Service account JSON or ADC

Rotations take effect on the gateway within its credential-refresh window — no redeploy.

## Fallbacks and retries

When a provider returns a 5xx or a rate-limit error, the gateway automatically retries with backoff and fails over across your other connected providers, with a per-provider circuit breaker to avoid hammering an unhealthy upstream. The model's home provider is always attempted first.

Two things to know:

* **Streaming requests are never retried or failed over** — a partial stream can't be safely replayed. They go straight to the model's home provider.
* **Fallback decisions are logged to ClickHouse**, and cost is attributed to the provider that actually served the request.

## Per-provider cost tracking

The dashboard breaks down spend by provider. When a request falls back to a secondary provider, cost is attributed to the provider that actually served it.

## Provider-native features

### Anthropic prompt caching

Pass `cache_control` breakpoints as normal — the gateway forwards them unmodified. Wardin parses `cache_creation_input_tokens` and `cache_read_input_tokens` separately so cost accounting is accurate.

### OpenAI function calling / tools

Fully supported. Tool-call requests bypass Wardin's semantic cache (exact-match cache still applies if `temperature=0`).

### Streaming

All providers support streaming via SSE. The gateway transparently proxies the stream.
