Dedicated IPs

Send from your own dedicated IP addresses for maximum deliverability control and reputation isolation.

Why Dedicated IPs?

By default, emails are sent from shared IP addresses. Dedicated IPs give you full control over your sending reputation:

  • Reputation isolation - Your deliverability is not affected by other senders
  • Predictable delivery - Consistent inbox placement based on your own sending behavior
  • Full control - Manage warming, volume, and pool assignments

Request a Dedicated IP

Provision a new dedicated IP address for your organization. New IPs start with a provisioning status and must be warmed before sending at full volume.

POST /v1/dedicated-ips
request-ip.ts
const ip = await client.dedicatedIps.create();

console.log(ip.ipAddress); // '10.123.45.67'
console.log(ip.status);    // 'provisioning'

IP Status

StatusDescription
provisioningIP is being allocated and configured
warmingIP is going through the warming schedule
activeIP is fully warmed and ready for full volume
cooldownIP is in cooldown period before release
releasedIP has been returned to the pool

IP Warming

New dedicated IPs must be warmed before sending at full volume. The warming process gradually increases your sending volume over 14 days to build a positive reputation with mailbox providers.

Do Not Skip Warming

Sending high volumes from a cold IP address will result in emails being rejected or placed in spam. Always follow the warming schedule.

POST /v1/dedicated-ips/:id/warmup
start-warmup.ts
const ip = await client.dedicatedIps.startWarmup('ip_xxxxx');

console.log(ip.status); // 'warming'
console.log(ip.warmingSchedule);
// {
//   totalDays: 14,
//   days: [
//     { day: 1, dailyLimit: 50, cumulativeProgress: 0.07 },
//     { day: 2, dailyLimit: 100, cumulativeProgress: 0.14 },
//     ...
//     { day: 14, dailyLimit: -1, cumulativeProgress: 1.0 }
//   ]
// }

Warming Schedule

The 14-day warming plan gradually increases your daily sending limit:

DayDaily LimitProgress
1507%
325021%
75,00050%
1040,00071%
14Unlimited100%

Check Warming Progress

GET /v1/dedicated-ips/:id
check-progress.ts
const ip = await client.dedicatedIps.get('ip_xxxxx');

console.log(ip.warmup.progress);        // 0.5 (50%)
console.log(ip.warmup.currentDailyLimit); // 5000
console.log(ip.warmup.startedAt);        // '2025-01-10T10:00:00Z'

IP Pools

Organize your dedicated IPs into pools to separate traffic types. For example, create separate pools for transactional and marketing emails to isolate their reputations.

Create a Pool

POST /v1/dedicated-ips/pools
create-pool.ts
const pool = await client.dedicatedIps.createPool({
  name: 'Transactional',
  isDefault: true,
});

console.log(pool.id);   // 'pool_xxxxx'
console.log(pool.name); // 'Transactional'

Add IPs to a Pool

POST /v1/dedicated-ips/pools/:poolId/ips
add-ip-to-pool.ts
const ip = await client.dedicatedIps.addIpToPool('pool_xxxxx', {
  ipId: 'ip_xxxxx',
});

console.log(ip.poolId); // 'pool_xxxxx'

List Pools

GET /v1/dedicated-ips/pools
list-pools.ts
const { data: pools } = await client.dedicatedIps.listPools();

for (const pool of pools) {
  console.log(`${pool.name}: ${pool.ipCount} IPs (default: ${pool.isDefault})`);
}

List Dedicated IPs

GET /v1/dedicated-ips
list-ips.ts
const { data: ips } = await client.dedicatedIps.list();

for (const ip of ips) {
  console.log(`${ip.ipAddress}: ${ip.status} (${Math.round(ip.warmup.progress * 100)}%)`);
}

Release a Dedicated IP

Release a dedicated IP when you no longer need it. The IP will be removed from any pool it belongs to.

DELETE /v1/dedicated-ips/:id
release-ip.ts
await client.dedicatedIps.release('ip_xxxxx');

Python SDK

dedicated_ips.py
# Request and warm an IP
ip = client.dedicated_ips.create()
ip = client.dedicated_ips.start_warmup(ip["id"])

# Create a pool and assign the IP
pool = client.dedicated_ips.create_pool(name="Transactional", is_default=True)
client.dedicated_ips.add_ip_to_pool(pool["id"], ip_id=ip["id"])

# Check warming progress
ip = client.dedicated_ips.get(ip["id"])
print(f"Progress: {ip['warmup']['progress'] * 100}%")