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

# Migrations overview

> Move an existing LLM integration to Concentrate AI with minimal code changes

Concentrate AI is a drop-in replacement for most LLM providers and gateways. If your code already speaks the OpenAI Chat Completions format, migration is usually two values (the base URL and the API key) plus cleanup of any provider-specific extras.

## Pick your starting point

Match what you're using today to the guide that walks through the swap.

| If you're coming from... | Use this guide                          |
| ------------------------ | --------------------------------------- |
| OpenRouter               | [OpenRouter](/docs/migrations/openrouter)    |
| Helicone                 | [Helicone](/docs/migrations/helicone)        |
| Portkey                  | [Portkey](/docs/migrations/portkey)          |
| Merge Gateway            | [Merge Gateway](/docs/migrations/merge)      |
| Vercel AI Gateway        | [Vercel AI Gateway](/docs/migrations/vercel) |
| TensorZero               | [TensorZero](/docs/migrations/tensorzero)    |
| LiteLLM                  | [LiteLLM](/docs/migrations/litellm)          |

More migration guides are on the way. If you don't see your stack, the same pattern almost always applies: point your existing client at `https://api.concentrate.ai/v1`, swap your API key for one that starts with `sk-cn-v1-`, and remove any provider-specific headers or routing parameters. See the [Quickstart](/docs/getting-started/quickstart) for a from-scratch setup.

## What every migration has in common

Regardless of where you're coming from, four things change and the rest stays the same.

| Setting               | Value                                                                                                                |
| --------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Base URL              | `https://api.concentrate.ai/v1`                                                                                      |
| Auth header           | `Authorization: Bearer sk-cn-v1-...`                                                                                 |
| Chat Completions path | `/chat/completions` (unchanged)                                                                                      |
| Model format          | `provider/model-id` (e.g. `anthropic/claude-haiku-4-5`, `bedrock/claude-haiku-4-5`) or bare slug (`auto`, `gpt-5.4`) |

Streaming, tool calling, structured output, and multi-modal input all work through the same OpenAI-compatible shape, with no code changes beyond the client construction.

## What you get after migrating

* **Team-scale spend management.** Budgets at the organization, team, developer, and key level.
* **Built-in observability.** Usage, spend, latency, providers, models, and cache hits across your whole org, with no third-party integration.
* **Strategy-driven auto routing.** `model: "auto"` with explicit optimization for cost, latency, or performance. See [Auto Routing](/docs/api-reference/endpoint/auto-routing).
* **Feature-aware resiliency.** Uptime-gated failover, feature degradation, and cache-affinity routing across 16+ providers.
* **Native Responses and Messages APIs.** In addition to Chat Completions, use a first-class [Responses API](/docs/api-reference/endpoint/create-response) and an Anthropic-compatible [Messages API](/docs/api-reference/endpoint/create-message).

## Enabling Zero Data Retention

If your migration is driven by compliance or privacy requirements, turn on **Zero Data Retention (ZDR)** on the keys you use after migrating. With ZDR enabled, routing is restricted to providers with certified zero data retention policies, so your prompts and completions are never stored upstream.

ZDR is a **key-level setting**, not a request parameter. Configure it once and keep using the key normally.

1. Go to the [API Keys](https://concentrate.ai/keys) page in the dashboard.
2. Create or edit a key.
3. Under **Data Retention**, enable **Zero Data Retention (Providers)**.
4. Optionally disable **Enable Request Logging** if you also don't want Concentrate to store request/response content.

Organization admins can enforce ZDR across every key in the org from **Organization Settings → Data Retention**. Enforced settings lock the toggle on all child keys so individual users can't override them.

<Warning>
  With ZDR enabled, requests can only be routed through ZDR-certified providers. If you send a request targeting a model or provider that Concentrate does not have a ZDR agreement with, the request will fail rather than fall back to a non-certified provider. Before turning ZDR on, confirm that the models you depend on are covered. See [ZDR-Supported Providers](/docs/api-reference/endpoint/zero-data-retention#zdr-supported-providers).
</Warning>

For the full enforcement hierarchy, logging defaults, and how ZDR interacts with routing fallbacks, see [Zero Data Retention & Logging](/docs/api-reference/endpoint/zero-data-retention).

## Feedback

If you hit anything that didn't translate cleanly from your previous stack, email [support@concentrate.ai](mailto:support@concentrate.ai). We use migration friction reports to prioritize compatibility fixes.
