# Twilio API domain migration guide

Twilio is deprecating the `api.REGION.twilio.com` domain pattern (where *REGION* is `ie1`, `au1`, `br1`, `de1`, `jp1`, `sg1`, or `us2`). These domains process all requests in US1 regardless of the region code and will stop working on **April 28, 2026**.

| Migrate from                                                                                                                                             | Migrate to                                                   |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `api.ie1.twilio.com`, `api.au1.twilio.com`, `api.br1.twilio.com`, `api.de1.twilio.com`, `api.jp1.twilio.com`, `api.sg1.twilio.com`, `api.us2.twilio.com` | `api.twilio.com`                                             |
| SDK usage with `region` parameter only                                                                                                                   | SDK usage without `region`, or with both `edge` and `region` |

`api.us1.twilio.com` remains valid. If you need Twilio to primarily process and store data outside the US (in Ireland or Australia), see [Understanding Edge Locations](/docs/global-infrastructure/understanding-edge-locations#the-processing-region).

## Identify affected systems

Search your code, configuration files, and infrastructure for the deprecated domains (`api.ie1.twilio.com`, `api.au1.twilio.com`, `api.br1.twilio.com`, `api.de1.twilio.com`, `api.jp1.twilio.com`, `api.sg1.twilio.com`, `api.us2.twilio.com`).

## Choose your primary data processing region

Twilio can process your data in the United States, Ireland, or Australia. Identify the regions your applications need.

## Migrate REST API calls

If you make API requests without using a Twilio SDK (for example, with cURL or a custom HTTP client), update the domain based on where you need data processed.

## US

* Replace the deprecated domain with `api.twilio.com`. Your existing credentials continue to work.

  ```bash
  # Before (deprecated)
  curl -X POST https://api.ie1.twilio.com/2010-04-01/Accounts/$ACCOUNT_SID/Messages.json \
    -u $ACCOUNT_SID:$AUTH_TOKEN \
    -d "Body=Hello from Twilio"

  # After
  curl -X POST https://api.twilio.com/2010-04-01/Accounts/$ACCOUNT_SID/Messages.json \
    -u $ACCOUNT_SID:$AUTH_TOKEN \
    -d "Body=Hello from Twilio"
  ```

## Ireland

1. [Create region-specific API credentials](/docs/global-infrastructure/manage-regional-api-credentials) for IE1.
2. Update the domain to `api.dublin.ie1.twilio.com` and use your region-specific credentials:

   ```bash
   curl -X POST https://api.dublin.ie1.twilio.com/2010-04-01/Accounts/$ACCOUNT_SID/Messages.json \
     -u $REGION_API_KEY_SID:$REGION_API_KEY_SECRET \
     -d "Body=Hello from Twilio"
   ```

## Australia

1. [Create region-specific API credentials](/docs/global-infrastructure/manage-regional-api-credentials) for AU1.
2. Update the domain to `api.sydney.au1.twilio.com` and use your region-specific credentials:

   ```bash
   curl -X POST https://api.sydney.au1.twilio.com/2010-04-01/Accounts/$ACCOUNT_SID/Messages.json \
     -u $REGION_API_KEY_SID:$REGION_API_KEY_SECRET \
     -d "Body=Hello from Twilio"
   ```

## Migrate SDKs

> \[!WARNING]
>
> **Before migrating, update to the latest version of your Twilio SDK.**
>
> Older SDK versions may not properly support the `edge` parameter or may have bugs related to regional routing. Updating to the latest SDK version ensures:
>
> * Proper support for `edge` and `region` parameters
> * Bug fixes for regional routing
> * Improved error handling
>
> Check the [Twilio Helper Libraries](/docs/libraries) page for the latest SDK versions.

Select your SDK language to see migration examples. If you need data processing in Ireland or Australia, see [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region#twilio-server-side-sdks).

## Node.js

### Deprecated: SDK initialization

Don't use the following SDK initialization pattern. It's deprecated.

```javascript
// Deprecated - region without edge routes to US only
const twilio = require('twilio');
const client = twilio(accountSid, authToken, {
  region: 'ie1'
});
```

### Default: SDK initialization (US1)

This default SDK initialization pattern uses the US1 region.

```javascript
// Correct - processes in US
const twilio = require('twilio');
const client = twilio(accountSid, authToken);
// No region parameter needed
```

### SDK initialization (non-US)

If you are looking to use regionalized Twilio applications, see [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region#twilio-server-side-sdks) and use the following SDK initialization pattern.

```javascript
// Processes in IE1 (requires IE1 credentials and data migration)
const twilio = require('twilio');
const client = twilio(accountSid, authToken, {
  edge: 'dublin',
  region: 'ie1'
});
```

## Python

### Deprecated: SDK initialization

Don't use the following SDK initialization pattern. It's deprecated.

```python
# Deprecated
from twilio.rest import Client

client = Client(account_sid, auth_token, region='ie1')
```

### Default: SDK initialization (US1)

This default SDK initialization pattern uses the US1 region.

```python
# Correct - processes in US
from twilio.rest import Client

client = Client(account_sid, auth_token)
```

### SDK initialization (non-US)

If you are looking to use regionalized Twilio applications, see [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region#twilio-server-side-sdks) and use the following SDK initialization pattern.

```python
# Processes in IE1 (requires IE1 credentials and data migration)
from twilio.rest import Client

client = Client(
    account_sid,
    auth_token,
    edge='dublin',
    region='ie1'
)
```

## Ruby

### Deprecated: SDK initialization

Don't use the following SDK initialization pattern. It's deprecated.

```ruby
# Deprecated
require 'twilio-ruby'

client = Twilio::REST::Client.new(account_sid, auth_token, region: 'ie1')
```

### Default: SDK initialization (US1)

This default SDK initialization pattern uses the US1 region.

```ruby
# Correct - processes in US
require 'twilio-ruby'

client = Twilio::REST::Client.new(account_sid, auth_token)
```

### SDK initialization (non-US)

If you are looking to use regionalized Twilio applications, see [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region#twilio-server-side-sdks) and use the following SDK initialization pattern.

```ruby
# Processes in IE1 (requires IE1 credentials and data migration)
require 'twilio-ruby'

client = Twilio::REST::Client.new(
  account_sid,
  auth_token,
  edge: 'dublin',
  region: 'ie1'
)
```

## PHP

### Deprecated: SDK initialization

Don't use the following SDK initialization pattern. It's deprecated.

```php
// Deprecated
use Twilio\Rest\Client;

$client = new Client($accountSid, $authToken, $accountSid, 'ie1');
```

### Default: SDK initialization (US1)

This default SDK initialization pattern uses the US1 region.

```php
// Correct - processes in US
use Twilio\Rest\Client;

$client = new Client($accountSid, $authToken);
```

### SDK initialization (non-US)

If you are looking to use regionalized Twilio applications, see [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region#twilio-server-side-sdks) and use the following SDK initialization pattern.

```php
// Processes in IE1 (requires IE1 credentials and data migration)
use Twilio\Rest\Client;

$client = new Client($accountSid, $authToken);
$client->setRegion('ie1');
$client->setEdge('dublin');
```

## Java

### Deprecated: SDK initialization

Don't use the following SDK initialization pattern. It's deprecated.

```java
// Deprecated
Twilio.init(accountSid, authToken);
Twilio.setRegion("ie1");
```

### Default: SDK initialization (US1)

This default SDK initialization pattern uses the US1 region.

```java
// Correct - processes in US
Twilio.init(accountSid, authToken);
```

### SDK initialization (non-US)

If you are looking to use regionalized Twilio applications, see [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region#twilio-server-side-sdks) and use the following SDK initialization pattern.

```java
// Processes in IE1 (requires IE1 credentials and data migration)
Twilio.init(accountSid, authToken);
Twilio.setRegion("ie1");
Twilio.setEdge("dublin");
```

## C# / .NET

### Deprecated: SDK initialization

Don't use the following SDK initialization pattern. It's deprecated.

```csharp
// Deprecated
TwilioClient.Init(accountSid, authToken, region: "ie1");
```

### Default: SDK initialization (US1)

This default SDK initialization pattern uses the US1 region.

```csharp
// Correct - processes in US
TwilioClient.Init(accountSid, authToken);
```

### SDK initialization (non-US)

If you are looking to use regionalized Twilio applications, see [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region#twilio-server-side-sdks) and use the following SDK initialization pattern.

```csharp
// Processes in IE1 (requires IE1 credentials and data migration)
TwilioClient.Init(accountSid, authToken, region: "ie1", edge: "dublin");
```

> \[!CAUTION]
>
> When using any SDK, specifying only the `region` parameter without the `edge` parameter routes requests to US1, not the specified region. Always specify both `edge` and `region` parameters together for regional processing.

## Migrate infrastructure and networking

### Migrate DNS allowlists

Update your DNS allowlists to include the correct domains:

**Remove (deprecated domains):**

```text
api.ie1.twilio.com
api.au1.twilio.com
api.br1.twilio.com
api.de1.twilio.com
api.jp1.twilio.com
api.sg1.twilio.com
api.us2.twilio.com
```

**Keep or Add (US processing):**

```text
api.twilio.com
api.us1.twilio.com  (valid - processes in US)
```

**Add (if using regional processing - IE1 and AU1 only):**

```text
api.dublin.ie1.twilio.com
api.sydney.au1.twilio.com
```

### Migrate firewall rules

Update firewall rules, security groups, proxies, and load balancers that reference the deprecated domains.

> \[!NOTE]
>
> Twilio uses a CDN, so IP addresses may vary. Use domain names in allowlists rather than IP addresses when possible. See [Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements) for IP ranges.

***

## Test your migration

Test in a development environment before deploying to production. If using regional processing, confirm your regional credentials work. Deploy gradually and monitor error rates before completing the migration.

## Troubleshoot

### Common issues and solutions

#### Issue: "Authentication failed" errors

**Cause:** Using US credentials with regional endpoints, or vice versa.

**Solution:** Ensure you're using region-specific credentials for regional endpoints. See [managing Regional API credentials](/docs/global-infrastructure/manage-regional-api-credentials).

```bash
# Wrong - US credentials with IE1 endpoint
curl -u $US_ACCOUNT_SID:$US_AUTH_TOKEN \
  https://api.dublin.ie1.twilio.com/...

# Right - IE1 credentials with IE1 endpoint
curl -u $IE1_API_KEY_SID:$IE1_API_KEY_SECRET \
  https://api.dublin.ie1.twilio.com/...
```

#### Issue: Requests still going to US despite using region parameter in SDK

**Cause:** Specifying `region` without `edge` parameter.

**Solution:** Always specify both `edge` and `region` together:

```javascript
// Wrong - only region specified
const client = twilio(accountSid, authToken, {
  region: 'ie1'  // Still routes to US!
});

// Right - both edge and region specified
const client = twilio(accountSid, authToken, {
  edge: 'dublin',
  region: 'ie1'
});
```

#### Issue: DNS resolution fails for new domain pattern

**Cause:** Firewall, proxy, or DNS resolver blocking new domain patterns.

**Solution:**

1. Update DNS allowlists
2. Update firewall rules
3. Clear DNS cache: `sudo dscacheutil -flushcache` (macOS) or `ipconfig /flushdns` (Windows)
4. Verify DNS resolution: `nslookup api.dublin.ie1.twilio.com`

#### Issue: SSL/TLS certificate validation errors

**Cause:** Certificate mismatch or outdated certificates.

**Solution:**

1. Update system CA certificates
2. Ensure clients support SNI (Server Name Indication)
3. Verify certificate chain: `openssl s_client -connect api.dublin.ie1.twilio.com:443`

## Get help

[Contact Twilio Support](https://support.twilio.com) for assistance with your migration.

## Additional resources

* [Understanding Edge Locations](/docs/global-infrastructure/understanding-edge-locations)
* [Understanding Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions)
* [Managing Regional API Credentials](/docs/global-infrastructure/manage-regional-api-credentials)
* [Edge Locations Reference](/docs/global-infrastructure/edge-locations)
* [Legacy Regions Reference](/docs/global-infrastructure/edge-locations/legacy-regions)
* [Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements)
* [Twilio Interconnect](/docs/interconnect)
