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

# EU Routing

> Route AI requests through Requesty's EU endpoint for GDPR compliance. EU processing, storage, and EU model inference for full data residency

Route your AI traffic through Requesty's EU infrastructure in **Frankfurt, Germany (AWS `eu-central-1`)**. All processing and storage by Requesty stays in the EU. Combine with EU-only approved models for full end-to-end data residency.

<Frame caption="Your request enters in Frankfurt, stays in the EU, and reaches EU-hosted models across AWS, Azure, and GCP.">
  <img src="https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/eu_routing.png?fit=max&auto=format&n=qjPoKXyN196jjWse&q=85&s=43815497b2c3cf5d2fb27e4c90ebf648" alt="EU routing with Requesty: an encrypted request enters the EU router in Frankfurt and is routed to EU-hosted models in AWS, Azure, and GCP regions, with all processing, storage, and inference staying within the EU." width="1536" height="1024" data-path="images/eu_routing.png" />
</Frame>

<Note>
  **[Configure EU routing](https://app.requesty.ai/routing-policies)** in the Requesty Console.
</Note>

<Warning>
  Using the EU endpoint alone only guarantees that **Requesty's processing** stays in the EU. To ensure your data never leaves the EU, you **must also use an EU model** (e.g. `bedrock/claude-sonnet-4-5-v2@eu-central-1` or `vertex/gemini-3.5-flash@eu`). If you use a global model like `anthropic/claude-sonnet-4-5-20250514`, your request will be forwarded outside the EU for inference.
</Warning>

## How It Works

There are **two layers** to consider for EU data residency:

| Layer                   | What it covers                                          | How to enable                                       |
| ----------------------- | ------------------------------------------------------- | --------------------------------------------------- |
| **Requesty Processing** | Request routing, logging, caching, analytics, all in EU | Use `router.eu.requesty.ai` as your base URL        |
| **Model Inference**     | Where the AI model actually runs                        | Approve only EU region models via the Model Library |

<Info>
  Using the EU endpoint guarantees that **Requesty's processing and storage** stays in the EU. To also guarantee that **model inference** stays in the EU, you must use an EU region model (see below).
</Info>

## EU Endpoint

| Protocol                 | EU Endpoint                        |
| ------------------------ | ---------------------------------- |
| **OpenAI-compatible**    | `https://router.eu.requesty.ai/v1` |
| **Anthropic-compatible** | `https://router.eu.requesty.ai`    |

Same API key, same request format, same features. Just swap the base URL.

## Quick Start

<Tabs>
  <Tab title="OpenAI SDK (Python)">
    ```python theme={"dark"}
    import openai

    client = openai.OpenAI(
        api_key="YOUR_REQUESTY_API_KEY",
        base_url="https://router.eu.requesty.ai/v1",  # EU endpoint
    )

    response = client.chat.completions.create(
        model="bedrock/claude-sonnet-4-5-v2@eu-central-1",  # EU model
        messages=[{"role": "user", "content": "Hello from Europe!"}]
    )

    print(response.choices[0].message.content)
    ```
  </Tab>

  <Tab title="OpenAI SDK (TypeScript)">
    ```typescript theme={"dark"}
    import OpenAI from 'openai';

    const client = new OpenAI({
        apiKey: 'YOUR_REQUESTY_API_KEY',
        baseURL: 'https://router.eu.requesty.ai/v1',  // EU endpoint
    });

    const response = await client.chat.completions.create({
        model: 'bedrock/claude-sonnet-4-5-v2@eu-central-1',  // EU model
        messages: [{ role: 'user', content: 'Hello from Europe!' }],
    });

    console.log(response.choices[0].message);
    ```
  </Tab>

  <Tab title="Anthropic SDK">
    ```python theme={"dark"}
    import anthropic

    client = anthropic.Anthropic(
        api_key="YOUR_REQUESTY_API_KEY",
        base_url="https://router.eu.requesty.ai",  # EU endpoint (no /v1)
    )

    message = client.messages.create(
        model="bedrock/claude-sonnet-4-5-v2@eu-central-1",  # EU model
        max_tokens=1024,
        messages=[{"role": "user", "content": "Hello from Europe!"}]
    )

    print(message.content[0].text)
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={"dark"}
    curl https://router.eu.requesty.ai/v1/chat/completions \
      -H "Authorization: Bearer YOUR_REQUESTY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "bedrock/claude-sonnet-4-5-v2@eu-central-1",
        "messages": [{"role": "user", "content": "Hello from Europe!"}]
      }'
    ```
  </Tab>
</Tabs>

## Approve EU Only Models

By default, the EU endpoint can route to **any** model, including models hosted outside the EU. The Requesty processing stays in the EU, but the model inference might not.

To guarantee that **both** Requesty processing and model inference stay in the EU, restrict your organization to EU region models only:

<Steps>
  <Step title="Open the Model Library">
    Go to [Model Library](https://app.requesty.ai/model-library) and switch to **Table** view for the best overview.
  </Step>

  <Step title="Filter by EU Regions">
    Click the **Regions** filter and select EU regions: **EU**, **FRANCECENTRAL**, **SWEDENCENTRAL**, or any other European region.
  </Step>

  <Step title="Select and Approve">
    Select all the EU models you want to allow, then click **Add Selected to Approved Models**. This restricts your organization to only use these models.
  </Step>
</Steps>

<img src="https://mintcdn.com/requesty/MM5cSf0NbVkrpoDF/images/approve-eu-models.png?fit=max&auto=format&n=MM5cSf0NbVkrpoDF&q=85&s=43de5987e3942f00282e1595be98ac98" alt="Filter and approve EU only models in the Model Library" width="3214" height="1906" data-path="images/approve-eu-models.png" />

The Model Library shows you all available EU models with their provider, pricing, context window, and capabilities (Vision, Reasoning, Tools, Cache). EU region models include:

* **AWS Bedrock**: Models with `@eu-central-1`, `@eu-west-1`, `@eu-north-1` suffixes (Claude, Llama, Mistral)
* **Google Vertex**: Models with `@eu` suffix (e.g. `vertex/gemini-3.5-flash@eu`, `vertex/gemini-3.1-flash-lite@eu`)
* **Azure**: Models with `@francecentral`, `@swedencentral` suffixes
* **Mistral**: Hosted in EU by default

<Warning>
  If you enable [Approved Models](/features/approved-models) with only EU region models, any request using a non-approved model will be rejected. This is by design, it ensures no data leaves the EU for model inference.
</Warning>

## Strict EU Enforcement

Switching the base URL to `https://router.eu.requesty.ai` is a client-side change. Nothing stops a developer in your organization from still pointing their SDK at the global endpoint. If you need a hard guarantee that **all** traffic from your organization goes through the EU endpoint, Requesty can enforce this server-side.

With strict EU enforcement enabled, any request from your organization to a non-EU endpoint (e.g. `router.requesty.ai`) is rejected. Every user and every API key in your organization must use `https://router.eu.requesty.ai`.

<Note>
  Strict EU enforcement is activated on request. Contact **[support@requesty.ai](mailto:support@requesty.ai)** from your organization's account and we will enable it for you.
</Note>

Combine strict EU enforcement with [EU only approved models](#approve-eu-only-models) for a complete, organization-wide guarantee that no data leaves the EU, for Requesty processing or for model inference.

## Use with AI Coding Tools

### Claude Code

```bash theme={"dark"}
export ANTHROPIC_BASE_URL=https://router.eu.requesty.ai
export ANTHROPIC_API_KEY=YOUR_REQUESTY_API_KEY
claude
```

### Cline / Roo Code

In your VS Code settings, set the API base URL to:

```
https://router.eu.requesty.ai/v1
```

See the [Cline](/integrations/cline) or [Roo Code](/integrations/roo-code) integration guides for full setup.

## Combine with Routing Policies

EU routing works with all Requesty features. Create routing policies that stay entirely within EU infrastructure:

### EU Failover Policy

Create a [Fallback Policy](/features/fallback-policies) across EU regions:

| Priority | Model                                       | Retries   |
| -------- | ------------------------------------------- | --------- |
| 1st      | `bedrock/claude-sonnet-4-5-v2@eu-central-1` | 2 retries |
| 2nd      | `bedrock/claude-sonnet-4-5-v2@eu-west-1`    | 2 retries |
| 3rd      | `bedrock/claude-3-5-haiku@eu-central-1`     | 1 retry   |

### EU Load Balancing

Distribute across EU regions with a [Load Balancing Policy](/features/load-balancing-policies):

| Model                                       | Weight |
| ------------------------------------------- | ------ |
| `bedrock/claude-sonnet-4-5-v2@eu-central-1` | 50%    |
| `bedrock/claude-sonnet-4-5-v2@eu-west-1`    | 50%    |

## Other Regional Endpoints

Requesty also offers regional endpoints outside the EU:

| Region             | Endpoint                           |
| ------------------ | ---------------------------------- |
| **EU (Frankfurt)** | `https://router.eu.requesty.ai/v1` |
| **US (Global)**    | `https://router.requesty.ai/v1`    |

<Note>
  All regional endpoints use the same API key. No additional configuration needed, just change the base URL.
</Note>

## Compliance Summary

| Requirement                          | How Requesty Covers It                                                                                   |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------- |
| **GDPR Data Residency**              | EU endpoint processes and stores all data in Frankfurt (AWS `eu-central-1`)                              |
| **EU Only Model Inference**          | Approve only EU region models in the [Model Library](https://app.requesty.ai/model-library)              |
| **Organization Wide EU Enforcement** | Reject all requests to non-EU endpoints, activated via [support@requesty.ai](mailto:support@requesty.ai) |
| **PII Protection**                   | Enable [Guardrails](/features/guardrails) for automatic PII detection and redaction                      |
| **Access Control**                   | Use [RBAC](/features/rbac) to restrict who can change model approvals                                    |
| **Audit Trail**                      | Full request logging via [Usage Analytics](/features/usage-analytics)                                    |
| **Data Minimization**                | Use [Request Metadata](/features/request-metadata) to tag and track data flows                           |
