Skip to main content

IP Pool Management Guide

IP pools allow you to manage dedicated IP addresses for email sending, providing better control over deliverability and sender reputation.


Overview

IP pools enable you to:

  • Segment traffic - Separate transactional and marketing emails
  • Protect reputation - Isolate different email types
  • Scale sending - Distribute load across multiple IPs
  • Warm up IPs - Gradually increase volume on new IPs

Supported Providers

Currently, IP pools are supported for:

ProviderPool ID Format
SparkPostCustom pool name

Create an IP Pool

Endpoint

POST /v1/ip-pool/add

Purpose

Creates a new IP pool for organizing and managing dedicated IP addresses.

Request Body

FieldTypeRequiredDescription
providerstring✅ YesEmail service provider. Currently supported: "sparkpost"
pool_idstring✅ YesUnique identifier for the pool. Use descriptive names like "transactional", "marketing", "priority"

Example Request

curl -X POST https://api.edith.example.com/v1/ip-pool/add \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"provider": "sparkpost",
"pool_id": "transactional-emails"
}'

Response

{
"success": true,
"message": "IP pool created successfully",
"data": {
"pool_id": "transactional-emails",
"provider": "sparkpost",
"created_at": "2024-01-15T10:30:00Z",
"details": {}
}
}

Get an IP Pool

Endpoint

GET /v1/ip-pool/get

Purpose

Retrieves details of a specific IP pool.

Query Parameters

ParameterTypeRequiredDescription
providerstring✅ YesThe provider name (e.g., "sparkpost")
pool_idstring✅ YesThe pool identifier

Example Request

curl -X GET "https://api.edith.example.com/v1/ip-pool/get?provider=sparkpost&pool_id=transactional-emails" \
-H "Authorization: Bearer YOUR_TOKEN"

Response

{
"success": true,
"message": "IP pool retrieved successfully",
"data": {
"pool_id": "transactional-emails",
"provider": "sparkpost",
"created_at": "2024-01-15T10:30:00Z",
"deleted_at": null,
"details": {
"ips": ["192.168.1.1", "192.168.1.2"],
"status": "active"
}
}
}

List IP Pools

Endpoint

GET /v1/ip-pool/list

Purpose

Retrieves a paginated list of all IP pools, optionally filtered by provider.

Query Parameters

ParameterTypeRequiredDescription
providerstringNoFilter pools by provider
page_tokenstringNoPagination token for next page

Example Request - All Pools

curl -X GET "https://api.edith.example.com/v1/ip-pool/list" \
-H "Authorization: Bearer YOUR_TOKEN"

Example Request - Filter by Provider

curl -X GET "https://api.edith.example.com/v1/ip-pool/list?provider=sparkpost" \
-H "Authorization: Bearer YOUR_TOKEN"

Response

{
"success": true,
"message": "IP pools listed successfully",
"data": {
"ip_pools": [
{
"pool_id": "transactional-emails",
"provider": "sparkpost",
"created_at": "2024-01-15T10:30:00Z",
"details": {}
},
{
"pool_id": "marketing-campaigns",
"provider": "sparkpost",
"created_at": "2024-01-10T08:00:00Z",
"details": {}
}
],
"next_page_token": null,
"total_count": 2
}
}

Delete an IP Pool

Endpoint

DELETE /v1/ip-pool/delete

Purpose

Permanently deletes an IP pool.

⚠️ Warning: Ensure no active sending configurations use this pool before deletion.

Query Parameters

ParameterTypeRequiredDescription
providerstring✅ YesThe provider name
pool_idstring✅ YesThe pool identifier to delete

Example Request

curl -X DELETE "https://api.edith.example.com/v1/ip-pool/delete?provider=sparkpost&pool_id=old-pool" \
-H "Authorization: Bearer YOUR_TOKEN"

Response

{
"success": true,
"message": "IP pool deleted successfully"
}

Using IP Pools When Sending

Reference an IP pool in the email send request:

curl -X POST https://api.edith.example.com/v1/email/send \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"from": {
"email": "notifications@mail.yourcompany.com",
"name": "YourCompany"
},
"to": [
{ "email": "recipient@example.com" }
],
"subject": "Order Confirmation",
"content": [
{ "type": "text/html", "value": "<p>Your order is confirmed!</p>" }
],
"mailer_id": "domain_01JC3BBW8S9YGX2VNKG5MD7BTA",
"settings": {
"ip_pool": "transactional-emails",
"open_tracking": { "enable": true }
}
}'

Best Practices

1. Segment by Email Type

Create separate pools for different email categories:

Pool NameUse Case
transactionalPassword resets, order confirmations, receipts
marketingNewsletters, promotions, announcements
onboardingWelcome series, user activation
alertsSecurity alerts, system notifications

2. IP Warming

When using new IPs:

  • Start with low volume (50-100 emails/day)
  • Gradually increase over 2-4 weeks
  • Focus on engaged recipients initially
  • Monitor deliverability metrics

Warming Schedule Example:

WeekDaily Volume
150-100
2200-500
31,000-2,000
45,000-10,000
5+Production volume

3. Monitor Reputation

Track metrics per pool:

  • Bounce rates
  • Spam complaints
  • Inbox placement
  • Engagement rates

4. Fallback Strategy

If a pool's reputation degrades:

  • Temporarily route to a different pool
  • Investigate and fix the cause
  • Re-warm if necessary

Common Errors

ErrorCauseSolution
IP pool already existsPool ID is takenUse a unique pool_id
IP pool not foundInvalid pool_id or providerVerify the pool exists
Invalid providerUnsupported providerUse a supported provider
Pool in usePool is referenced by sending configsUpdate configs before deleting