Warmup & Pool Classification
The Warmup endpoints help manage IP warm-up schedules and classify IPs into sending pool tiers based on reputation, warm-up progress, and blocklist state.
Warm-Up Status
GET/v1/email/ip/{ip}/warmup
Get warm-up advisor data for an IP. Returns the current warm-up status, recommended daily volume, and guidance on whether to pause sending.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ip | string | Yes | IPv4 or IPv6 address |
Response (200)
{
"data": {
"ip": "198.51.100.25",
"status": "warming",
"days_sending": 14,
"reputation_score": 72,
"recommended_daily_volume": 200,
"auto_pause_recommended": false,
"next_milestone": "2026-04-28",
"next_milestone_volume": 500
},
"meta": {
"processing_time_ms": 10
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
ip | string | The IP address (normalized) |
status | string | Current warm-up status |
days_sending | integer | Days since first observed sending activity |
reputation_score | integer | Current reputation score (0-100) |
recommended_daily_volume | integer | Recommended max daily send volume |
auto_pause_recommended | boolean | Whether sending should be paused |
auto_pause_reason | string | Reason for pause (when applicable) |
next_milestone | string | Date of next volume increase (YYYY-MM-DD) |
next_milestone_volume | integer | Volume at the next milestone |
Warm-Up Statuses
| Status | Description |
|---|---|
cold | No observed sending activity |
warming | Active warm-up in progress (days 1-30) |
warm | Past initial warm-up, good reputation (days 30-90, score 60+) |
established | Fully established sender (90+ days, score 60+) |
damaged | Blocklisted or reputation score below 30 |
Volume Ramp Schedule
The recommended volume follows a standard warm-up ramp:
| Days | Recommended Volume |
|---|---|
| 1-7 | 50/day |
| 8-14 | 200/day |
| 15-21 | 500/day |
| 22-30 | 1,000/day |
| 31-45 | 2,500/day |
| 46-60 | 5,000/day |
| 61-90 | 10,000/day |
| 91+ | 50,000/day |
Volume is further adjusted based on reputation score:
- Score below 50: volume halved
- Score below 40: volume quartered
- Listed or score below 30: volume set to 0 (do not send)
Auto-Pause Conditions
The system recommends pausing when:
- Reputation score falls below 40
- IP is actively blocklisted
Pool Classification
POST/v1/email/pool/classify
Classify a set of IPs into pool tiers based on their reputation, warm-up status, and blocklist state. Maximum 50 IPs per request.
Request Body
{
"ips": ["198.51.100.25", "203.0.113.50", "192.0.2.100"]
}
Response (200)
{
"data": [
{
"ip": "198.51.100.25",
"tier": "seasoned",
"reputation_score": 78,
"warmup_status": "warm",
"listed": false,
"recommendation": "IP has good reputation and is past warm-up \u2014 ready for the main sending pool"
},
{
"ip": "203.0.113.50",
"tier": "probation",
"reputation_score": 45,
"warmup_status": "warming",
"listed": false,
"recommendation": "IP needs more warm-up time and reputation building before joining the main pool"
},
{
"ip": "192.0.2.100",
"tier": "suspend",
"reputation_score": 20,
"warmup_status": "damaged",
"listed": true,
"recommendation": "IP is blocklisted or reputation is critically low \u2014 remove from sending pool"
}
],
"meta": {
"processing_time_ms": 35
}
}
Response Fields (per IP)
| Field | Type | Description |
|---|---|---|
ip | string | The IP address |
tier | string | Assigned pool tier |
reputation_score | integer | Current reputation score |
warmup_status | string | Current warm-up status |
listed | boolean | Whether the IP is blocklisted |
recommendation | string | Human-readable recommendation |
Pool Tiers
| Tier | Criteria | Action |
|---|---|---|
dedicated_candidate | Score 80+, established/warm, volume 5000+ | Eligible for dedicated IP assignment |
seasoned | Score 70+, warm or established | Ready for the main sending pool |
probation | Score < 60, cold, or warming | Needs more warm-up before main pool |
suspend | Listed or score < 30 | Remove from sending pool immediately |
Limits
- Maximum 50 IPs per request
- Invalid IPs are silently skipped
- If reputation data is unavailable, defaults to
probationtier
Error Responses
400 Bad Request
{
"data": {
"error": "invalid IP address",
"code": "INVALID_IP"
},
"meta": {
"processing_time_ms": 0
}
}
400 Too Many IPs
{
"data": {
"error": "maximum 50 IPs per request",
"code": "TOO_MANY_IPS"
},
"meta": {
"processing_time_ms": 0
}
}
Code Examples
cURL
# Warm-up status
curl -X GET "https://api.limesindex.com/v1/email/ip/198.51.100.25/warmup" \
-H "X-API-Key: YOUR_API_KEY"
# Pool classification
curl -X POST "https://api.limesindex.com/v1/email/pool/classify" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ips": ["198.51.100.25", "203.0.113.50", "192.0.2.100"]}'
Python
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.limesindex.com"
HEADERS = {"X-API-Key": API_KEY}
# Check warm-up status for a new IP
resp = requests.get(
f"{BASE_URL}/v1/email/ip/198.51.100.25/warmup",
headers=HEADERS
)
warmup = resp.json()["data"]
print(f"Status: {warmup['status']}")
print(f"Days sending: {warmup['days_sending']}")
print(f"Recommended volume: {warmup['recommended_daily_volume']}/day")
if warmup["auto_pause_recommended"]:
print(f"PAUSE RECOMMENDED: {warmup['auto_pause_reason']}")
else:
print(f"Next milestone: {warmup['next_milestone']} ({warmup['next_milestone_volume']}/day)")
# Classify your entire pool
pool_ips = ["198.51.100.25", "203.0.113.50", "192.0.2.100"]
resp = requests.post(
f"{BASE_URL}/v1/email/pool/classify",
headers=HEADERS,
json={"ips": pool_ips}
)
for item in resp.json()["data"]:
print(f"{item['ip']}: tier={item['tier']} score={item['reputation_score']}")
print(f" {item['recommendation']}")
Use Cases
- Automated warm-up: Use
recommended_daily_volumeto throttle sending during IP warm-up - Pool management: Classify IPs daily to route traffic to healthy IPs and rest damaged ones
- Dedicated IP promotion: Identify IPs ready for dedicated assignment to high-value customers
- Incident response: Quickly identify which IPs need suspension after a reputation event
- New IP onboarding: Monitor cold IPs as they progress through the warm-up schedule
Related Endpoints
- Email Reputation - Detailed reputation scoring
- Blocklist - Check blocklist status