Start warmup for a mailbox
Enables warmup on a mailbox. When no config is supplied, provider-specific
defaults are applied:
| Provider | startingVolume | dailyIncrease | targetVolume |
|---|---|---|---|
| gmail / outlook / custom | 10 | 1 | 25 |
| azure | 2 | 1 | 5 |
All providers default to reply rates inbox 30–45%, promotions 15–25%, spam 100%.
Any config fields supplied override the provider default; omitted fields inherit it.
targetVolume is capped at 50.
Preconditions: the mailbox must have status: active, must not already be
warming, and must pass a live DNS check (health score ≥ 80 across MX/SPF/DKIM/DMARC).
curl -X POST "https://api.sendkit.ai/v1/warmup/start/example_string" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{}'
import requests
import json
url = "https://api.sendkit.ai/v1/warmup/start/example_string"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
}
data = {}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.sendkit.ai/v1/warmup/start/example_string", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
},
body: JSON.stringify({})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{}`)
req, err := http.NewRequest("POST", "https://api.sendkit.ai/v1/warmup/start/example_string", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.sendkit.ai/v1/warmup/start/example_string')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-Api-Key'] = 'YOUR_API_KEY'
request.body = '{}'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"mailboxId": "664a1b2c3d4e5f6a7b8c9d03",
"status": "in_progress",
"healthScore": 100,
"config": {
"startingVolume": 10,
"dailyIncrease": 1,
"targetVolume": 25,
"replyRates": {
"inbox": {
"min": 30,
"max": 45
},
"promotions": {
"min": 15,
"max": 25
},
"spam": 100
}
}
}
}
{
"success": false,
"error": {
"code": "DNS_INCOMPLETE",
"message": "DNS records incomplete. All records (MX, SPF, DKIM, DMARC) are required to enable warmup.",
"healthScore": 55,
"issues": [
"DKIM records not configured",
"DMARC record not configured"
]
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "startingVolume cannot exceed targetVolume"
}
}
{
"error": "Not Found",
"message": "The requested resource was not found",
"code": 404
}
{
"success": false,
"error": {
"code": "INACTIVE_MAILBOX",
"message": "Mailbox must be active to start warmup (status: inactive)"
}
}
{
"success": false,
"error": {
"code": "ALREADY_WARMING",
"message": "Warmup is already in progress for this mailbox"
}
}
/v1/warmup/start/{mailboxId}Target server for requests. Edit to use your own host.
Platform API key (sk_user_...) or Workspace API key (sk_...)
Mailbox ID
The media type of the request body
Warmup config overrides. Every field is optional — omitted fields inherit the mailbox's provider default (on start) or its existing value (on update). Volumes are 1–50.
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Platform API key (sk_user_...) or Workspace API key (sk_...)
Path Parameters
Mailbox ID
Body
Warmup config overrides. Every field is optional — omitted fields inherit the mailbox's provider default (on start) or its existing value (on update). Volumes are 1–50.