> ## 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.

# Zero Data Retention & Logging

> Configure Zero Data Retention and request logging on Concentrate API keys, and see which models and providers offer ZDR-certified inference endpoints.

## Overview

Zero Data Retention (ZDR) and request logging are key-level data retention controls that determine how your data flows through the system.

* **ZDR** restricts routing to only providers with certified zero data retention policies — your prompts and completions are never stored by the upstream provider.
* **Request logging** controls whether Concentrate stores your request and response content for conversation history and audit purposes.

Both settings are configured per API key in the dashboard and enforced automatically on every request.

<Info>
  ZDR and logging are key-level settings, not request-body parameters. Configure them once on an API key and use that key normally with any of our inference endpoints.
</Info>

## Configure in Dashboard

### Key-Level Settings

1. Go to **API Keys**
2. Create or edit a key
3. Under **Data Retention**, configure:
   * **Zero Data Retention (Providers)** — when enabled, only ZDR-certified providers are used
   * **Enable Request Logging** — when enabled, full request/response content is stored (encrypted) for conversation history

### Organization-Level Enforcement

Organization admins can enforce data retention policies across all keys in the organization:

1. Go to **Organization Settings**
2. Under **Data Retention**, toggle enforcement for ZDR and/or logging
3. Enforced settings lock the corresponding toggle on all keys in the organization

<Warning>
  When a setting is enforced at the organization level, individual users cannot override it on their keys. The toggle appears locked in the dashboard.
</Warning>

## Enforcement Hierarchy

Data retention policies cascade from the highest organizational level down to individual keys:

| Level            | Scope                          | Can enforce on                                |
| ---------------- | ------------------------------ | --------------------------------------------- |
| **Organization** | All keys in the org            | Teams, users, and their keys                  |
| **Team**         | All keys owned by team members | Team member keys                              |
| **User**         | All keys owned by the user     | User's own keys                               |
| **Key**          | Single key                     | Only itself (if not locked by a higher level) |

Each field (`zdr` and `logging`) is resolved independently. A key tracks which level set each policy via a `policy_source` field (`"org"`, `"team"`, `"user"`, or `"key"`).

When a higher level releases enforcement, keys revert to their own settings unless another enforcer still applies.

## How ZDR Affects Routing

When ZDR is enabled on a key, the routing system only considers providers whose models have a certified ZDR policy. Non-ZDR providers are excluded entirely — even if they would otherwise be the best match for cost, latency, or performance.

```
Request with ZDR key
  → Routing filters to ZDR-certified providers only
  → Selects best provider from that subset
  → Returns response
```

If no ZDR-certified provider supports the requested model or features, the API returns a `422` error rather than falling back to a non-ZDR provider:

```json theme={null}
{
  "error": {
    "type": "invalid_request_error",
    "message": "Zero Data Retention (ZDR) is enabled, but there are no available providers or models that support it for this request."
  }
}
```

<Info>
  ZDR enforcement is strict by design. The system will never silently route to a non-ZDR provider, even as a fallback.
</Info>

### ZDR-Supported Providers

ZDR is a property of the **(model, provider) pair**, not of a model or its author alone. The native model detail endpoint exposes a per-provider `zdr` field that is either `false` or an object with policy and certificate URLs:

```json theme={null}
{
  "providers": {
    "openai":  { "zdr": { "policy_url": "...", "certificate_url": "..." } },
    "azure":   { "zdr": { "policy_url": "..." } },
    "bedrock": { "zdr": { "policy_url": "..." } }
  }
}
```

A model supports ZDR only through the specific provider slug(s) whose `zdr` field is an object. The combined `GET /v1/models` response does **not** include this field — use `GET /v1/models/{id}` to inspect per-provider ZDR status, or refer to the table below.

The following provider slugs currently offer ZDR-certified endpoints on Concentrate:

| Slug        | Provider                       |
| ----------- | ------------------------------ |
| `anthropic` | Anthropic direct API           |
| `azure`     | Microsoft Azure OpenAI Service |
| `azure-fw`  | Azure AI Foundry               |
| `bedrock`   | AWS Bedrock                    |
| `deepinfra` | DeepInfra                      |
| `fireworks` | Fireworks AI                   |
| `novita`    | Novita                         |
| `openai`    | OpenAI direct API              |
| `vertex`    | Google Cloud Vertex AI         |

<Info>
  A model's ZDR providers frequently do **not** include the model's own author. For example, Llama models reach ZDR via Bedrock, GLM models via DeepInfra/Novita/Azure Foundry, and Qwen models via Bedrock.
</Info>

<Info>
  Gemini models are ZDR-certified only through the **Vertex** provider ([Google's ZDR policy](https://ai.google.dev/gemini-api/docs/zdr)) — the `ai-studio` provider does not offer ZDR. A Gemini request is only actually zero-data-retention if ZDR is enabled on the API key making the request; with ZDR enabled, routing is restricted to Vertex, and without it Gemini requests may route to non-ZDR providers.
</Info>

## ZDR-Supported Models

104 models across 9 providers are routed through ZDR-certified endpoints. The table below lists each model and the specific provider slug(s) you can pin to guarantee a ZDR-certified path. When ZDR is enabled on a key, Concentrate filters routing to these providers automatically.

### OpenAI (26)

| Model Slug               | Name                          | ZDR Provider(s)           |
| ------------------------ | ----------------------------- | ------------------------- |
| `gpt-5.6-sol`            | GPT 5.6 Sol                   | openai, azure             |
| `gpt-5.6-terra`          | GPT 5.6 Terra                 | openai, azure             |
| `gpt-5.6-luna`           | GPT 5.6 Luna                  | openai, azure             |
| `gpt-5.5`                | GPT 5.5                       | openai, azure             |
| `gpt-5.4-pro`            | GPT 5.4 Pro                   | openai, azure             |
| `gpt-5.4`                | GPT 5.4                       | openai, azure             |
| `gpt-5.4-mini`           | GPT 5.4 Mini                  | openai, azure             |
| `gpt-5.4-nano`           | GPT 5.4 Nano                  | openai, azure             |
| `gpt-5.3-codex`          | GPT 5.3 Codex                 | openai, azure             |
| `gpt-5.2`                | GPT 5.2                       | openai, azure             |
| `gpt-5.1`                | GPT 5.1                       | openai, azure             |
| `gpt-5`                  | GPT 5                         | openai, azure             |
| `gpt-5-mini`             | GPT 5 Mini                    | openai, azure             |
| `gpt-5-nano`             | GPT 5 Nano                    | openai, azure             |
| `o1`                     | OpenAI o1                     | openai                    |
| `o3`                     | OpenAI o3                     | openai                    |
| `o3-mini`                | OpenAI o3-mini                | openai                    |
| `o4-mini`                | OpenAI o4-mini                | openai                    |
| `gpt-4.1`                | GPT 4.1                       | openai, azure             |
| `gpt-4.1-mini`           | GPT 4.1 Mini                  | openai, azure             |
| `gpt-4o`                 | GPT 4o                        | openai, azure             |
| `gpt-4o-mini`            | GPT 4o Mini                   | openai, azure             |
| `gpt-oss-120b`           | OpenAI gpt-oss 120B           | azure, bedrock, fireworks |
| `gpt-oss-20b`            | OpenAI gpt-oss 20B            | bedrock, fireworks        |
| `gpt-oss-safeguard-120b` | OpenAI gpt-oss Safeguard 120B | bedrock                   |
| `gpt-oss-safeguard-20b`  | OpenAI gpt-oss Safeguard 20B  | bedrock                   |

### Anthropic (11)

| Model Slug          | Name              | ZDR Provider(s)           |
| ------------------- | ----------------- | ------------------------- |
| `claude-opus-5`     | Claude Opus 5     | anthropic, azure          |
| `claude-opus-4-8`   | Claude Opus 4.8   | anthropic, azure, bedrock |
| `claude-opus-4-7`   | Claude Opus 4.7   | anthropic, azure, bedrock |
| `claude-opus-4-6`   | Claude Opus 4.6   | anthropic, azure, bedrock |
| `claude-opus-4-5`   | Claude Opus 4.5   | anthropic, azure, bedrock |
| `claude-sonnet-5`   | Claude Sonnet 5   | anthropic, azure, bedrock |
| `claude-sonnet-4-6` | Claude Sonnet 4.6 | anthropic, azure, bedrock |
| `claude-sonnet-4-5` | Claude Sonnet 4.5 | anthropic, azure, bedrock |
| `claude-haiku-4-5`  | Claude Haiku 4.5  | anthropic, azure, bedrock |
| `claude-opus-4-1`   | Claude Opus 4.1   | anthropic, bedrock        |
| `claude-sonnet-4`   | Claude Sonnet 4   | bedrock                   |

### Google (13)

| Model Slug               | Name                   | ZDR Provider(s)   |
| ------------------------ | ---------------------- | ----------------- |
| `gemini-3.6-flash`       | Gemini 3.6 Flash       | vertex            |
| `gemini-3.5-flash`       | Gemini 3.5 Flash       | vertex            |
| `gemini-3.5-flash-lite`  | Gemini 3.5 Flash Lite  | vertex            |
| `gemini-3.1-pro-preview` | Gemini 3.1 Pro Preview | vertex            |
| `gemini-3-flash-preview` | Gemini 3 Flash Preview | vertex            |
| `gemini-2.5-pro`         | Gemini 2.5 Pro         | vertex            |
| `gemini-2.5-flash`       | Gemini 2.5 Flash       | vertex            |
| `gemini-2.5-flash-lite`  | Gemini 2.5 Flash Lite  | vertex            |
| `gemma-3-12b`            | Gemma 3 12B            | bedrock           |
| `gemma-3-4b`             | Gemma 3 4B IT          | bedrock           |
| `gemma-3-27b`            | Gemma 3 27B            | bedrock           |
| `gemma-4-26b`            | Gemma 4 26B A4B        | deepinfra         |
| `gemma-4-31b`            | Gemma 4 31B            | deepinfra, novita |

Gemini models reach ZDR via the `vertex` provider only — see the [Google tab](/docs/api-reference/endpoint/supported-models#google) of Supported Models for the current per-model breakdown.

### Meta (7)

| Model Slug               | Name                   | ZDR Provider(s) |
| ------------------------ | ---------------------- | --------------- |
| `llama-4-maverick`       | Llama 4 Maverick       | bedrock         |
| `llama-4-scout`          | Llama 4 Scout          | bedrock         |
| `llama-3-70b-instruct`   | Llama 3 70B Instruct   | bedrock         |
| `llama-3.3-70b-instruct` | Llama 3.3 70B Instruct | bedrock         |
| `llama-3.1-70b-instruct` | Llama 3.1 70B Instruct | bedrock         |
| `llama-3-8b-instruct`    | Llama 3 8B Instruct    | bedrock         |
| `llama-3.1-8b-instruct`  | Llama 3.1 8B Instruct  | bedrock         |

### Mistral (5)

| Model Slug            | Name                | ZDR Provider(s) |
| --------------------- | ------------------- | --------------- |
| `mistral-large-3`     | Mistral Large 3     | bedrock         |
| `magistral-small-1.2` | Magistral Small 1.2 | bedrock         |
| `ministral-3-3b`      | Ministral 3 3B      | bedrock         |
| `ministral-3-8b`      | Ministral 3 8B      | bedrock         |
| `ministral-3-14b`     | Ministral 3 14B     | bedrock         |

### Alibaba Cloud (6)

| Model Slug            | Name                | ZDR Provider(s) |
| --------------------- | ------------------- | --------------- |
| `qwen3.6-35b`         | Qwen3.6 35B A3B     | deepinfra       |
| `qwen3-32b`           | Qwen3 32B           | bedrock         |
| `qwen3-coder-next`    | Qwen3 Coder Next    | bedrock         |
| `qwen3-coder-30b-a3b` | Qwen3 Coder 30B A3B | bedrock         |
| `qwen3-next-80b-a3b`  | Qwen3 Next 80B A3B  | bedrock         |
| `qwen3-vl-235b-a22b`  | Qwen3 VL 235B A22B  | bedrock         |

### DeepSeek (5)

| Model Slug          | Name              | ZDR Provider(s)                   |
| ------------------- | ----------------- | --------------------------------- |
| `deepseek-r1`       | DeepSeek R1       | bedrock                           |
| `deepseek-r1-0528`  | DeepSeek R1 0528  | novita                            |
| `deepseek-v3-2`     | DeepSeek V3.2     | deepinfra, bedrock, azure, novita |
| `deepseek-v4-flash` | DeepSeek V4 Flash | novita, fireworks                 |
| `deepseek-v4-pro`   | DeepSeek V4 Pro   | azure-fw, novita, fireworks       |

### z.ai (5)

| Model Slug      | Name          | ZDR Provider(s)                        |
| --------------- | ------------- | -------------------------------------- |
| `glm-5.2`       | GLM-5.2       | deepinfra, novita, fireworks           |
| `glm-5.1`       | GLM-5.1       | deepinfra, azure-fw, novita, fireworks |
| `glm-5`         | GLM-5         | novita                                 |
| `glm-4.7`       | GLM-4.7       | bedrock                                |
| `glm-4.7-flash` | GLM-4.7 Flash | bedrock                                |

### Amazon (5)

| Model Slug     | Name                | ZDR Provider(s) |
| -------------- | ------------------- | --------------- |
| `nova-2-lite`  | Amazon Nova 2 Lite  | bedrock         |
| `nova-premier` | Amazon Nova Premier | bedrock         |
| `nova-pro`     | Amazon Nova Pro     | bedrock         |
| `nova-lite`    | Amazon Nova Lite    | bedrock         |
| `nova-micro`   | Amazon Nova Micro   | bedrock         |

### Moonshot AI (5)

| Model Slug         | Name             | ZDR Provider(s)                               |
| ------------------ | ---------------- | --------------------------------------------- |
| `kimi-k3`          | Kimi K3          | fireworks                                     |
| `kimi-k2-7-code`   | Kimi K2.7 Code   | deepinfra, novita, fireworks                  |
| `kimi-k2-6`        | Kimi K2.6        | deepinfra, azure, azure-fw, novita, fireworks |
| `kimi-k2-5`        | Kimi K2.5        | bedrock, azure, novita                        |
| `kimi-k2-thinking` | Kimi K2 Thinking | bedrock                                       |

### MiniMax (4)

| Model Slug     | Name         | ZDR Provider(s)   |
| -------------- | ------------ | ----------------- |
| `minimax-m3`   | MiniMax M3   | fireworks         |
| `minimax-m2-7` | MiniMax M2.7 | novita, fireworks |
| `minimax-m2-1` | MiniMax M2.1 | bedrock           |
| `minimax-m2`   | MiniMax M2   | bedrock           |

### xAI (1)

| Model Slug | Name     | ZDR Provider(s) |
| ---------- | -------- | --------------- |
| `grok-4.3` | Grok 4.3 | azure           |

### Writer (2)

| Model Slug   | Name       | ZDR Provider(s) |
| ------------ | ---------- | --------------- |
| `palmyra-x5` | Palmyra X5 | bedrock         |
| `palmyra-x4` | Palmyra X4 | bedrock         |

### AI21 Labs (2)

| Model Slug        | Name            | ZDR Provider(s) |
| ----------------- | --------------- | --------------- |
| `jamba-1-5-large` | Jamba 1.5 Large | bedrock         |
| `jamba-1-5-mini`  | Jamba 1.5 Mini  | bedrock         |

### NVIDIA (2)

| Model Slug               | Name                                   | ZDR Provider(s) |
| ------------------------ | -------------------------------------- | --------------- |
| `nemotron-3-nano-omni`   | Nemotron 3 Nano Omni 30B A3B Reasoning | deepinfra       |
| `nemotron-3-ultra-nvfp4` | Nemotron 3 Ultra NVFP4                 | fireworks       |

### Xiaomi (2)

| Model Slug      | Name          | ZDR Provider(s)   |
| --------------- | ------------- | ----------------- |
| `mimo-v2.5`     | MiMo V2.5     | deepinfra, novita |
| `mimo-v2.5-pro` | MiMo V2.5 Pro | novita            |

### StepFun AI (2)

| Model Slug       | Name           | ZDR Provider(s)   |
| ---------------- | -------------- | ----------------- |
| `step-3-5-flash` | Step 3.5 Flash | deepinfra         |
| `step-3-7-flash` | Step 3.7 Flash | novita, deepinfra |

### Tencent (1)

| Model Slug | Name        | ZDR Provider(s) |
| ---------- | ----------- | --------------- |
| `hy3`      | Hunyuan Hy3 | novita          |

<Info>
  This list is generated from the live `/v1/models/{id}` catalog. Use the [List Models](/docs/api-reference/endpoint/list-models) endpoint to verify in real time — only providers whose `zdr` field is an object (not `false`) qualify.
</Info>

## How Logging Works

Request logging controls whether your request and response content is persisted by Concentrate.

### When Logging is Enabled

* Full request body and response body are **encrypted** and stored
* Conversation history is available in the dashboard
* Redaction summaries (if [guardrails](/docs/api-reference/endpoint/guardrails-redaction) are active) are stored alongside the encrypted content

### When Logging is Disabled (Default)

* Request and response content is **not stored** — the `request` and `response` fields are set to `null` before persistence
* Redaction data is also stripped
* Basic request metadata (status code, elapsed time, model, provider) is still logged for operational purposes
* Token usage and cost are still tracked for billing

<Info>
  Logging is disabled by default. New keys start with logging disabled, following a privacy-first approach.
</Info>

### What Is Always Logged

Regardless of the logging setting, the following metadata is always recorded:

| Field                      | Purpose                |
| -------------------------- | ---------------------- |
| API key reference          | Request attribution    |
| URL and status code        | Operational monitoring |
| Elapsed time               | Performance tracking   |
| Model and provider         | Routing analytics      |
| Token usage (input/output) | Billing                |
| Cost (USD)                 | Billing                |

This metadata does not include your prompt content or model responses.

## Defaults

| Setting     | Default  | Notes                               |
| ----------- | -------- | ----------------------------------- |
| ZDR         | Disabled | All providers available for routing |
| Logging     | Disabled | No request/response content stored  |
| Enforcement | None     | No org/team/user level enforcement  |

Keys created before the data retention feature was introduced use the same safe defaults.

## Best Practices

<AccordionGroup>
  <Accordion title="Use ZDR for regulated workloads" icon="shield-halved">
    Enable ZDR on keys used for healthcare, financial, or other regulated data. This guarantees upstream providers will not retain your data, backed by their certified policies.
  </Accordion>

  <Accordion title="Enable logging for debugging" icon="bug">
    Turn on logging during development or when debugging issues. You can view full request/response history in the dashboard. Disable it in production if you don't need conversation history.
  </Accordion>

  <Accordion title="Enforce at the org level for compliance" icon="building">
    If your organization requires ZDR across all workloads, enforce it at the organization level. This locks the setting on every key and prevents individual users from disabling it.
  </Accordion>

  <Accordion title="Combine ZDR with provider restrictions" icon="lock">
    For maximum control, combine ZDR with the `routing.provider.fallbacks` parameter to limit requests to a specific set of approved, ZDR-certified providers:

    ```json theme={null}
    {
      "model": "gpt-4o",
      "input": "Process sensitive data",
      "routing": {
        "provider": { "fallbacks": ["azure"] }
      }
    }
    ```
  </Accordion>

  <Accordion title="Check model ZDR support before pinning" icon="magnifying-glass">
    Before pinning a specific model with ZDR enabled, verify it has ZDR-certified providers available. Use the List Models endpoint to check the `zdr` field.
  </Accordion>
</AccordionGroup>

## Related Documentation

<CardGroup cols={2}>
  <Card title="Routing" icon="route" href="/docs/api-reference/endpoint/auto-routing">
    How routing selects providers and handles ZDR filtering
  </Card>

  <Card title="Guardrails & Redaction" icon="shield" href="/docs/api-reference/endpoint/guardrails-redaction">
    API-key level redaction for input/output safety
  </Card>

  <Card title="List Models" icon="layer-group" href="/docs/api-reference/endpoint/list-models">
    Check ZDR support on available models
  </Card>

  <Card title="Error Handling" icon="triangle-exclamation" href="/docs/api-reference/endpoint/errors">
    Handle ZDR-related 422 errors
  </Card>
</CardGroup>
