Skip to content

For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see For full documentation content, see For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at

Cloud Endpoints and Data Residency

Choose LLM Gateway endpoints for data residency requirements.

For the complete documentation index, see llms.txt

LLM Gateway endpoints:

  • US (default): `
  • EU: `

cURL quickstart (EU endpoint):

bash
curl -X POST "" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ],
    "max_tokens": 1000
  }'

EU endpoint supports Anthropic Claude and Google Gemini only. OpenAI models are US-only.

Choose the endpoint that best fits your application's requirements—whether that's using the default US region or ensuring your data stays within the European Union.

Default Endpoint

The default endpoint (llm-gateway.assemblyai.com) processes your LLM Gateway requests in the US region. If you don't specify a base URL, this is the endpoint used by default.

EU Data Residency

The EU endpoint (llm-gateway.eu.assemblyai.com) guarantees your data never leaves the European Union. This is designed for organizations with strict data residency and governance requirements—your request and response data will remain entirely within the EU.

Endpoints

EndpointBase URLDescription
US (default)`Data stays in the US
EU`Data stays in the EU

EU model availability

The EU endpoint currently supports Anthropic Claude and Google Gemini models. OpenAI models are only available through the US endpoint.

ProviderUSEU
Anthropic ClaudeYesYes
Google GeminiYesYes
OpenAI GPTYesNo
Alibaba Cloud QwenYesNo
Moonshot AI KimiYesNo

For a full list of available models, see the LLM Gateway Overview.

Which endpoint should I use?

  • No data residency requirements? Use the default endpoint. No configuration change is needed.
  • Need EU data residency? Use the EU endpoint to ensure your data stays within the European Union. Note that only Claude and Gemini models are available in the EU region.

How to use it

Update your request URL to your preferred endpoint. Select an endpoint tab below to see examples for each.

The US endpoint is the default. No configuration change is required.

python
import requests

headers = {
  "authorization": "<YOUR_API_KEY>"
}

# No URL change needed — US is the default
response = requests.post(
    "",
    headers=headers,
    json={
        "model": "claude-sonnet-4-6",
        "messages": [
            {"role": "user", "content": "What is the capital of France?"}
        ],
        "max_tokens": 1000
    }
)

result = response.json()
print(result["choices"][0]["message"]["content"])
javascript
// No URL change needed — US is the default
const response = await fetch(
  "",
  {
    method: "POST",
    headers: {
      authorization: "<YOUR_API_KEY>",
      "content-type": "application/json",
    },
    body: JSON.stringify({
      model: "claude-sonnet-4-6",
      messages: [{ role: "user", content: "What is the capital of France?" }],
      max_tokens: 1000,
    }),
  }
);

const result = await response.json();
console.log(result.choices[0].message.content);
bash
curl -X POST \
  "" \
  -H "Authorization: <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [
      {
        "role": "user",
        "content": "What is the capital of France?"
      }
    ],
    "max_tokens": 1000
  }'

Use the EU endpoint to keep your data within the European Union.

python
import requests

headers = {
  "authorization": "<YOUR_API_KEY>"
}

response = requests.post(
    "",
    headers=headers,
    json={
        "model": "claude-sonnet-4-6",
        "messages": [
            {"role": "user", "content": "What is the capital of France?"}
        ],
        "max_tokens": 1000
    }
)

result = response.json()
print(result["choices"][0]["message"]["content"])
javascript
const response = await fetch(
  "",
  {
    method: "POST",
    headers: {
      authorization: "<YOUR_API_KEY>",
      "content-type": "application/json",
    },
    body: JSON.stringify({
      model: "claude-sonnet-4-6",
      messages: [{ role: "user", content: "What is the capital of France?" }],
      max_tokens: 1000,
    }),
  }
);

const result = await response.json();
console.log(result.choices[0].message.content);
bash
curl -X POST \
  "" \
  -H "Authorization: <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [
      {
        "role": "user",
        "content": "What is the capital of France?"
      }
    ],
    "max_tokens": 1000
  }'