> For the complete documentation index, see [llms.txt](https://docs.concurrence.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.concurrence.com/developer-guide/getting-started/regions-and-endpoints.md).

# Regions & Endpoints

Configure regional base URLs for both APIs, LLM availability by region, and dedicated cluster headers.

Concurrence's APIs are deployed across multiple regions to reduce latency and support data residency requirements. Each region operates independently with its own compute and AI routing. This page lists the regional base URLs for both the Classic API and the Platform API, explains how routing differs between the two, and covers dedicated cluster headers.

## Regional Base URLs

Concurrence runs in four regions. Use the tables below to find the base URL for each API.

### Classic API

| Region | Location                   | Base URL                              |
| ------ | -------------------------- | ------------------------------------- |
| **US** | N. Virginia (`us-east-1`)  | `https://api.amigo.ai`                |
| **CA** | Montreal (`ca-central-1`)  | `https://api-ca-central-1.amigo.ai`   |
| **EU** | Frankfurt (`eu-central-1`) | `https://api-eu-central-1.amigo.ai`   |
| **AU** | Sydney (`ap-southeast-2`)  | `https://api-ap-southeast-2.amigo.ai` |

### Platform API

| Region | Location                   | Base URL                                       |
| ------ | -------------------------- | ---------------------------------------------- |
| **US** | N. Virginia (`us-east-1`)  | `https://api.platform.amigo.ai`                |
| **CA** | Montreal (`ca-central-1`)  | `https://api-ca-central-1.platform.amigo.ai`   |
| **EU** | Frankfurt (`eu-central-1`) | `https://api-eu-central-1.platform.amigo.ai`   |
| **AU** | Sydney (`ap-southeast-2`)  | `https://api-ap-southeast-2.platform.amigo.ai` |

### How routing differs between the APIs

* **Classic API: region matching is required.** Use the base URL that matches your organization's data residency. Requests to a mismatched region return "Organization not found" errors.
* **Platform API: region matching is required.** `https://api.platform.amigo.ai` is the US endpoint, not a global router. Use the deployment hostname agreed during provisioning and store it with the integration configuration. A workspace response reports the serving deployment's region; it is not a mutable placement policy. The accepted legacy region-update field is ignored and does not migrate data.

AI-backed service and model availability can differ by deployment. Do not infer that every external model or processor runs in the workspace region; confirm the data path and regional availability for the features you enable.

{% hint style="info" %}
Contact your Concurrence representative for regional availability and upcoming regions.
{% endhint %}

For organizations on dedicated clusters, you can also target your cluster explicitly via the `x-mongo-cluster-name` header - see [Dedicated Clusters](#dedicated-clusters) below.

## Confirm Each Service

Regional Platform and Classic API hosts identify those API deployments. Confirm Scribe, managed channels, provider integrations, and any external processors separately before adding them to a workflow. Do not derive another service's base URL by substituting a region into a hostname.

| Capability                         | Regional readiness to verify                                                                          |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------- |
| Platform workspace resources       | Assigned Platform host, workspace access, and required features enabled in that deployment            |
| Classic integration                | Assigned Classic host and organization; use the Classic credential flow                               |
| Scribe and Zoom capture            | Assigned Scribe base, provider enrollment, supported capture setup, and permitted processing location |
| Managed phone and messaging        | Provisioned line/account and binding, regional support, and delivery/processing constraints           |
| External data and model processing | Approved source/destination and the applicable data-processing boundary                               |

Record the confirmation owner, test evidence, limitations, and date using [Govern a Deployment](/developer-guide/guides/govern-a-deployment.md). The public US Scribe schema establishes an HTTP contract, not availability in every Platform region. [Data Residency](https://docs.concurrence.com/platform-overview/data-residency) explains the broader deployment review.

## LLM Regional Availability

Not all LLMs are deployed in every region. When selecting [version set presets](/developer-guide/operations/devops/channel-tagging.md), make sure the preset's LLMs are available in your target region.

Confirm model and feature availability for the intended deployment. A preset name does not guarantee that every model or external processor is available in every region.

The legacy Python Agent Forge build provides `forge channel llm-info` and `forge channel validate-preset <preset> <channel> --region <region>` for Classic channel presets. These commands are not part of the current Go CLI's Platform-only command surface.

{% hint style="info" %}
**Classic preset compatibility.** Legacy preset and Python Forge instructions belong to [Classic channel tagging](/developer-guide/operations/devops/channel-tagging.md). Confirm the current model and processor availability for the actual deployment before reusing a historical preset. These presets do not establish Platform regional support.
{% endhint %}

### Global Deployment Map

```mermaid
%%{init: {"flowchart":{"useMaxWidth":true,"nodeSpacing":30,"rankSpacing":40},"theme":"base","themeVariables":{"fontFamily":"Inter, sans-serif","fontSize":"16px","background":"#FAF8F6","primaryColor":"#F1EAE7","primaryTextColor":"#1A1817","primaryBorderColor":"#D7D2D0","secondaryColor":"#FDFCFB","tertiaryColor":"#F6F2F0","lineColor":"#575452","textColor":"#3D3937","clusterBkg":"#FDFCFB","clusterBorder":"#E8E2DF","edgeLabelBackground":"#FAF8F6","actorBkg":"#F1EAE7","actorTextColor":"#1A1817","actorBorder":"#D7D2D0","actorLineColor":"#575452","signalColor":"#575452","signalTextColor":"#3D3937","labelBoxBkgColor":"#F1EAE7","labelBoxBorderColor":"#D7D2D0","labelTextColor":"#3D3937","loopTextColor":"#3D3937","noteBkgColor":"#F6F2F0","noteBorderColor":"#D7D2D0","noteTextColor":"#3D3937","activationBkgColor":"#F1EAE7","activationBorderColor":"#D7D2D0","altSectionBkgColor":"#FAF8F6","altSectionColor":"#3D3937"},"fontFamily":"Inter, sans-serif"}}%%
graph TB
    Global[Concurrence Platform<br/>Global Network]

    Global --> US["🇺🇸 US Region<br/>N. Virginia us-east-1<br/>api.amigo.ai"]
    Global --> CA["🇨🇦 CA Region<br/>Montreal ca-central-1<br/>api-ca-central-1<br/>.amigo.ai"]
    Global --> EU["🇪🇺 EU Region<br/>Frankfurt eu-central-1<br/>api-eu-central-1<br/>.amigo.ai"]
    Global --> AU["🇦🇺 AU Region<br/>Sydney ap-southeast-2<br/>api-ap-southeast-2<br/>.amigo.ai"]

    style US fill:#FDFCFB,stroke:#D7D2D0,color:#3D3937,stroke-width:1px
    style CA fill:#FDFCFB,stroke:#D7D2D0,color:#3D3937,stroke-width:1px
    style EU fill:#FDFCFB,stroke:#D7D2D0,color:#3D3937,stroke-width:1px
    style AU fill:#FDFCFB,stroke:#D7D2D0,color:#3D3937,stroke-width:1px
    style Global fill:#FDFCFB,stroke:#D7D2D0,color:#3D3937,stroke-width:1px
```

### cURL example

```bash
curl -X GET \
  -H "Authorization: Bearer <YOUR_JWT_TOKEN>" \
  "https://api-ca-central-1.amigo.ai/v1/<your-org-id>/organization/"
```

### SDK configuration

Specify the regional base URL via the SDK `base_url` or `baseUrl` setting.

{% tabs %}
{% tab title="Classic Python" %}

```python
from amigo_sdk import AmigoClient

with AmigoClient(
    api_key="<key>",
    api_key_id="<key-id>",
    user_id="<user>",
    organization_id="<org>",
    base_url="https://api-ca-central-1.amigo.ai",
) as client:
    org = client.organization.get()
```

{% endtab %}

{% tab title="Classic TypeScript" %}

```typescript
import { AmigoClient } from "@amigo-ai/sdk";

const client = new AmigoClient({
  apiKey: process.env.AMIGO_API_KEY!,
  apiKeyId: process.env.AMIGO_API_KEY_ID!,
  userId: process.env.AMIGO_USER_ID!,
  orgId: process.env.AMIGO_ORGANIZATION_ID!,
  baseUrl: "https://api-ca-central-1.amigo.ai",
});

const org = await client.organizations.getOrganization();
```

{% endtab %}

{% tab title="Platform TypeScript" %}

```typescript
import { AmigoClient } from '@amigo-ai/platform-sdk'

const client = new AmigoClient({
  apiKey: process.env.AMIGO_PLATFORM_API_KEY!,
  workspaceId: process.env.AMIGO_WORKSPACE_ID!,
  baseUrl: 'https://api-ca-central-1.platform.amigo.ai',
})

const workspace = await client.workspaces.get()
```

{% endtab %}
{% endtabs %}

### Environment variables

You can also set the regional endpoint via environment variables.

```env
# US
AMIGO_BASE_URL=https://api.amigo.ai

# CA
# AMIGO_BASE_URL=https://api-ca-central-1.amigo.ai

# EU
# AMIGO_BASE_URL=https://api-eu-central-1.amigo.ai

# AU
# AMIGO_BASE_URL=https://api-ap-southeast-2.amigo.ai
```

## Dedicated Clusters

This section covers Classic organization provisioning. It does not configure Platform workspace placement.

Some enterprises run on dedicated, isolated clusters. In these cases, include `x-mongo-cluster-name` to direct requests to your assigned cluster.

{% hint style="info" %}
**Cluster name.** Your Concurrence team provides the exact cluster name if your tenant uses a dedicated cluster. Do not guess this value.
{% endhint %}

**Header**: `x-mongo-cluster-name: <cluster-name>`

**When to use**:

* **Required**: organization provisioning (Create Organization)
* **Recommended**: early provisioning flows when the organization may not yet be discoverable via the global config
* **Optional**: normal operations for established organizations. Most endpoints do not require it once your org is fully set up.

### cURL example (dedicated cluster)

```bash
curl -X PUT \
  -H "Authorization: Bearer <YOUR_JWT_TOKEN>" \
  -H "x-mongo-cluster-name: <your-dedicated-cluster-name>" \
  -H "Content-Type: application/json" \
  "https://api-eu-central-1.amigo.ai/v1/<your-org-id>/organization/" \
  -d '{
    "org_name": "Example Corp",
    "user_dimensions": [],
    "logo": "<base64>",
    "square_logo": "<base64>",
    "favicon": "<base64>",
    "default_user_preferences": {},
    "azure_devops_team_name": "example-team"
  }'
```

The SDKs do not currently expose a raw-header helper; use cURL for dedicated-cluster provisioning requests.

## Recommendations

{% hint style="success" %}
**Best practices**

1. Confirm your organization or workspace region with your Concurrence representative and set the matching base URL.
2. For dedicated cluster tenants, store your cluster name in a secure configuration store.
3. Include the `x-mongo-cluster-name` header where instructed for dedicated clusters.
   {% endhint %}

{% hint style="warning" %}
**Troubleshooting "Organization not found"**

If you see this error:

* Verify you are calling the correct regional base URL.
* For provisioning flows, make sure the `x-mongo-cluster-name` header is set (if you are on a dedicated cluster).
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.concurrence.com/developer-guide/getting-started/regions-and-endpoints.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
