Sender Emails
The mailboxes your campaigns send from: list and connect them, check their DNS, health and warm-up.
List sender emails
Lists all sender emails for the authenticated user's space with optional filtering by campaign ID and connection status. Supports pagination. Each sender email carries its health score (healthScore): 0-100, higher is better, the share of its warm-up emails over the last 7 full days that landed in the inbox rather than spam; it moves daily as warm-up emails land in the inbox (up) or in spam (down), and is null while warm-up is off or before 20 warm-up emails were checked. Use it to pick the accounts to add to a campaign.
Parameters
- page integer in query
Page number (default: 1)
- limit integer in query
Page size (default: 20, maximum: 200)
- spaceId integer in query
Filter by space ID
- campaignId integer in query
Filter by campaign ID
- isConnected boolean in query
Filter by connection status
Responses
- 200 List of sender emails · ListSenderEmailsResponse
- 400 Invalid query parameters · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 500 Failed to retrieve sender emails · ErrorResponse
Fields in the 200 response
- hasMore boolean
- limit integer
- page integer
- senderEmails array of SenderEmailListItem
15 fields inside senderEmails
- address stringExample:
john@example.com - campaignIds array of integerExample:
[1,2,3] - createdAt stringExample:
2024-01-10T10:30:00Z - currentDailyLimit integerExample:
35 - familyName stringExample:
Doe - givenName stringExample:
John - healthScore integer
Health score 0-100, higher is better: the share of this account's warm-up emails over the last 7 full days that landed in the inbox rather than spam; 90+ is the app's bar for campaigns. It moves daily as warm-up emails land in the inbox (up) or in spam (down). Null while warm-up is off or before 20 warm-up emails were checked. The same number the app shows as the account's health score.
Example:96 - id integerExample:
123 - isConnected booleanExample:
true - manuallyDisconnected booleanExample:
false - maximumSendingsLimitPerDay integerExample:
50 - minimumSendingsLimitPerDay integerExample:
20 - provider stringExample:
google - toggleGradualBuildUp booleanExample:
true - updatedAt stringExample:
2024-01-15T10:30:00Z
- total integer
Request
curl -X GET "https://api.emailchaser.com/r/sender-emails" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"hasMore": true,
"limit": 123,
"page": 123,
"senderEmails": [
{
"address": "john@example.com",
"campaignIds": [
1,
2,
3
],
"createdAt": "2024-01-10T10:30:00Z",
"currentDailyLimit": 35,
"familyName": "Doe",
"givenName": "John",
"healthScore": 96,
"id": 123,
"isConnected": true,
"manuallyDisconnected": false,
"maximumSendingsLimitPerDay": 50,
"minimumSendingsLimitPerDay": 20,
"provider": "google",
"toggleGradualBuildUp": true,
"updatedAt": "2024-01-15T10:30:00Z"
}
],
"total": 123
}Connect an SMTP/IMAP sender email
Connects an SMTP/IMAP mailbox to the workspace using an app password, with no browser step. Google and Microsoft mailboxes are not supported here because both require an interactive consent screen; connect those in the app. The address must be a business domain.
Request bodyJSON · ConnectSenderEmailRequest
- email string required
- firstName stringAt most 255 characters
- imapServerUrl string required
ImapServerUrl and SmtpServerUrl accept the provider's host, optionally with a port, for example "imap.fastmail.com:993".
At least 1 characters - lastName stringAt most 255 characters
- loginString string
LoginString defaults to the email address when omitted, which is what most providers expect.
- password string requiredAt least 1 characters
- smtpServerUrl string requiredAt least 1 characters
Responses
- 201 Sender email connected successfully · ConnectSenderEmailResponse
- 400 Invalid request body or non-business email address · ErrorInvalidSenderEmailAddress
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 402 Plan does not allow another sender email · ErrorSenderEmailPlanLimit
- 409 Email already connected to another workspace · ErrorSenderEmailAlreadyConnected
- 500 Failed to connect sender email · ErrorFailedToConnectSenderEmail
- 502 Mail provider rejected the credentials · ErrorFailedToConnectSenderEmail
Fields in the 201 response
- message stringExample:
sender email connected successfully - senderEmail SenderEmailResponse
23 fields inside senderEmail
- address stringExample:
john@example.com - campaignIds array of integerExample:
[1,2,3] - connectionHistory array of ConnectionHistoryItem
The account's last 20 connection events, newest first. Null in the response to PUT /sender-emails/{id}.
- createdAt stringExample:
2024-01-10T10:30:00Z - currentDailyLimit integerExample:
35 - errorCode stringExample:
AUTH_FAILED - errorMessage stringExample:
Authentication failed - familyName stringExample:
Doe - givenName stringExample:
John - healthScore integer
Health score 0-100, higher is better: the share of this account's warm-up emails over the last 7 full days that landed in the inbox rather than spam; 90+ is the app's bar for campaigns. It moves daily as warm-up emails land in the inbox (up) or in spam (down). Null while warm-up is off or before 20 warm-up emails were checked. The same number the app shows as the account's health score.
Example:96 - id integerExample:
123 - isConnected booleanExample:
true - lastDisconnectedAt stringExample:
2024-01-15T10:30:00Z - lastReconnectedAt stringExample:
2024-01-16T09:00:00Z - manuallyDisconnected booleanExample:
false - maximumSendingsLimitPerDay integerExample:
50 - minimumSendingsLimitPerDay integerExample:
20 - pictureUrl stringExample:
https://example.com/avatar.jpg - provider stringExample:
google - provisioningStatus stringExample:
complete - signature stringExample:
Best regards, John Doe - toggleGradualBuildUp booleanExample:
true - updatedAt stringExample:
2024-01-15T10:30:00Z
Request
curl -X POST "https://api.emailchaser.com/r/sender-emails" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "jane@acme.com",
"firstName": "Jane",
"imapServerUrl": "string",
"lastName": "Doe",
"loginString": "string",
"password": "string",
"smtpServerUrl": "string"
}'Response
{
"message": "sender email connected successfully",
"senderEmail": {
"address": "john@example.com",
"campaignIds": [
1,
2,
3
],
"connectionHistory": [
{
"campaignId": 10,
"createdAt": "2024-01-15T10:30:00Z",
"disconnectionReason": "token_expired",
"errorCode": "AUTH_FAILED",
"errorMessage": "Token has expired",
"eventType": "disconnected",
"id": 456,
"userId": 5
}
],
"createdAt": "2024-01-10T10:30:00Z",
"currentDailyLimit": 35,
"errorCode": "AUTH_FAILED",
"errorMessage": "Authentication failed",
"familyName": "Doe",
"givenName": "John",
"healthScore": 96,
"id": 123,
"isConnected": true,
"lastDisconnectedAt": "2024-01-15T10:30:00Z",
"lastReconnectedAt": "2024-01-16T09:00:00Z",
"manuallyDisconnected": false,
"maximumSendingsLimitPerDay": 50,
"minimumSendingsLimitPerDay": 20,
"pictureUrl": "https://example.com/avatar.jpg",
"provider": "google",
"provisioningStatus": "complete",
"signature": "Best regards,\nJohn Doe",
"toggleGradualBuildUp": true,
"updatedAt": "2024-01-15T10:30:00Z"
}
}Get a sender email by ID
Retrieves detailed information about a specific sender email including connection status, limits, settings, its last 20 connection events and health score. The sender email comes back as a flat object, not wrapped in a "senderEmail" key. The health score (healthScore) is 0-100, higher is better: the share of the account's warm-up emails over the last 7 full days that landed in the inbox rather than spam. It moves daily as warm-up emails land in the inbox (up) or in spam (down), and is null while warm-up is off or before 20 warm-up emails were checked.
Parameters
- id integer required in path
Sender Email ID
Responses
- 200 Sender email details · SenderEmailResponse
- 400 Invalid sender email ID · ErrorInvalidSenderEmailID
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 403 Forbidden - sender email does not belong to your space · ErrorForbidden
- 404 Sender email not found · ErrorSenderEmailNotFound
Fields in the 200 response
- address stringExample:
john@example.com - campaignIds array of integerExample:
[1,2,3] - connectionHistory array of ConnectionHistoryItem
The account's last 20 connection events, newest first. Null in the response to PUT /sender-emails/{id}.
8 fields inside connectionHistory
- campaignId integerExample:
10 - createdAt stringExample:
2024-01-15T10:30:00Z - disconnectionReason stringExample:
token_expired - errorCode stringExample:
AUTH_FAILED - errorMessage stringExample:
Token has expired - eventType stringExample:
disconnected - id integerExample:
456 - userId integerExample:
5
- createdAt stringExample:
2024-01-10T10:30:00Z - currentDailyLimit integerExample:
35 - errorCode stringExample:
AUTH_FAILED - errorMessage stringExample:
Authentication failed - familyName stringExample:
Doe - givenName stringExample:
John - healthScore integer
Health score 0-100, higher is better: the share of this account's warm-up emails over the last 7 full days that landed in the inbox rather than spam; 90+ is the app's bar for campaigns. It moves daily as warm-up emails land in the inbox (up) or in spam (down). Null while warm-up is off or before 20 warm-up emails were checked. The same number the app shows as the account's health score.
Example:96 - id integerExample:
123 - isConnected booleanExample:
true - lastDisconnectedAt stringExample:
2024-01-15T10:30:00Z - lastReconnectedAt stringExample:
2024-01-16T09:00:00Z - manuallyDisconnected booleanExample:
false - maximumSendingsLimitPerDay integerExample:
50 - minimumSendingsLimitPerDay integerExample:
20 - pictureUrl stringExample:
https://example.com/avatar.jpg - provider stringExample:
google - provisioningStatus stringExample:
complete - signature stringExample:
Best regards, John Doe - toggleGradualBuildUp booleanExample:
true - updatedAt stringExample:
2024-01-15T10:30:00Z
Request
curl -X GET "https://api.emailchaser.com/r/sender-emails/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"address": "john@example.com",
"campaignIds": [
1,
2,
3
],
"connectionHistory": [
{
"campaignId": 10,
"createdAt": "2024-01-15T10:30:00Z",
"disconnectionReason": "token_expired",
"errorCode": "AUTH_FAILED",
"errorMessage": "Token has expired",
"eventType": "disconnected",
"id": 456,
"userId": 5
}
],
"createdAt": "2024-01-10T10:30:00Z",
"currentDailyLimit": 35,
"errorCode": "AUTH_FAILED",
"errorMessage": "Authentication failed",
"familyName": "Doe",
"givenName": "John",
"healthScore": 96,
"id": 123,
"isConnected": true,
"lastDisconnectedAt": "2024-01-15T10:30:00Z",
"lastReconnectedAt": "2024-01-16T09:00:00Z",
"manuallyDisconnected": false,
"maximumSendingsLimitPerDay": 50,
"minimumSendingsLimitPerDay": 20,
"pictureUrl": "https://example.com/avatar.jpg",
"provider": "google",
"provisioningStatus": "complete",
"signature": "Best regards,\nJohn Doe",
"toggleGradualBuildUp": true,
"updatedAt": "2024-01-15T10:30:00Z"
}Update a sender email by ID
Updates an existing sender email's information. Only provided fields will be updated. Can update name, signature, and daily sending limits.
Parameters
- id integer required in path
Sender Email ID
Request bodyJSON · UpdateSenderEmailRequest
- currentDailyLimit integerMinimum 0. Maximum 1000
- familyName stringAt most 255 characters
- givenName stringAt least 1 characters. At most 255 characters
- maximumSendingsLimitPerDay integer
Daily sending limits
Minimum 1. Maximum 1000 - minimumSendingsLimitPerDay integerMinimum 1. Maximum 1000
- signature string
- toggleGradualBuildUp boolean
Gradual build-up toggle. While on, daily sending is capped at min(5 x weeks since the account was connected, 50, maximumSendingsLimitPerDay); turn it off to send above 50 a day.
Responses
- 200 Sender email updated successfully · UpdateSenderEmailResponse
- 400 Invalid sender email ID or request body · ErrorInvalidSenderEmailID
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 403 Forbidden - sender email does not belong to your space · ErrorForbidden
- 404 Sender email not found · ErrorSenderEmailNotFound
- 500 Failed to update sender email · ErrorFailedToUpdateSenderEmail
Fields in the 200 response
- message stringExample:
sender email updated successfully - senderEmail SenderEmailResponse
23 fields inside senderEmail
- address stringExample:
john@example.com - campaignIds array of integerExample:
[1,2,3] - connectionHistory array of ConnectionHistoryItem
The account's last 20 connection events, newest first. Null in the response to PUT /sender-emails/{id}.
- createdAt stringExample:
2024-01-10T10:30:00Z - currentDailyLimit integerExample:
35 - errorCode stringExample:
AUTH_FAILED - errorMessage stringExample:
Authentication failed - familyName stringExample:
Doe - givenName stringExample:
John - healthScore integer
Health score 0-100, higher is better: the share of this account's warm-up emails over the last 7 full days that landed in the inbox rather than spam; 90+ is the app's bar for campaigns. It moves daily as warm-up emails land in the inbox (up) or in spam (down). Null while warm-up is off or before 20 warm-up emails were checked. The same number the app shows as the account's health score.
Example:96 - id integerExample:
123 - isConnected booleanExample:
true - lastDisconnectedAt stringExample:
2024-01-15T10:30:00Z - lastReconnectedAt stringExample:
2024-01-16T09:00:00Z - manuallyDisconnected booleanExample:
false - maximumSendingsLimitPerDay integerExample:
50 - minimumSendingsLimitPerDay integerExample:
20 - pictureUrl stringExample:
https://example.com/avatar.jpg - provider stringExample:
google - provisioningStatus stringExample:
complete - signature stringExample:
Best regards, John Doe - toggleGradualBuildUp booleanExample:
true - updatedAt stringExample:
2024-01-15T10:30:00Z
Request
curl -X PUT "https://api.emailchaser.com/r/sender-emails/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"currentDailyLimit": 123,
"familyName": "string",
"givenName": "string",
"maximumSendingsLimitPerDay": 1,
"minimumSendingsLimitPerDay": 1,
"signature": "string",
"toggleGradualBuildUp": true
}'Response
{
"message": "sender email updated successfully",
"senderEmail": {
"address": "john@example.com",
"campaignIds": [
1,
2,
3
],
"connectionHistory": [
{
"campaignId": 10,
"createdAt": "2024-01-15T10:30:00Z",
"disconnectionReason": "token_expired",
"errorCode": "AUTH_FAILED",
"errorMessage": "Token has expired",
"eventType": "disconnected",
"id": 456,
"userId": 5
}
],
"createdAt": "2024-01-10T10:30:00Z",
"currentDailyLimit": 35,
"errorCode": "AUTH_FAILED",
"errorMessage": "Authentication failed",
"familyName": "Doe",
"givenName": "John",
"healthScore": 96,
"id": 123,
"isConnected": true,
"lastDisconnectedAt": "2024-01-15T10:30:00Z",
"lastReconnectedAt": "2024-01-16T09:00:00Z",
"manuallyDisconnected": false,
"maximumSendingsLimitPerDay": 50,
"minimumSendingsLimitPerDay": 20,
"pictureUrl": "https://example.com/avatar.jpg",
"provider": "google",
"provisioningStatus": "complete",
"signature": "Best regards,\nJohn Doe",
"toggleGradualBuildUp": true,
"updatedAt": "2024-01-15T10:30:00Z"
}
}Get a sender email's DNS vitals and warm-up status
Checks the sender domain's SPF, DKIM, DMARC and MX records and reports each as OK, WARNING, MISSING or ERROR with human-readable issues, the same checks behind the app's DNS vitals view. DNS lookups run live at request time (a few seconds worst case), so the response always reflects current records - there is no cache to go stale. Also includes the mailbox's warm-up status: whether it is enrolled, today's ramp target (currentPerDay), the configured daily cap and its health score.
Parameters
- id integer required in path
Sender Email ID
Responses
- 200 DNS vitals and warm-up status · SenderEmailDNSResponse
- 400 Invalid sender email ID · ErrorInvalidSenderEmailID
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Sender email not found · ErrorSenderEmailNotFound
- 422 Sender email has no valid domain · ErrorSenderEmailNoDomain
- 500 Failed to check DNS records · ErrorFailedToCheckDNS
Fields in the 200 response
- checkedAt string
CheckedAt is when the live DNS lookups ran (this request).
Example:2026-07-31T10:30:00Z - dkim DkimCheckResult
6 fields inside dkim
- checkedSelectors array of string
CheckedSelectors is every selector name looked up, in the order tried.
- issues array of string
- record stringExample:
v=DKIM1; k=rsa; p=MIGfMA0GCSq - selector string
Selector is the DKIM selector the record was found under, null when no record was found.
Example:google - selectorSource string
SelectorSource says where selector came from: SIGNATURE (read off the DKIM-Signature of this domain's warm-up mail), CUSTOMER (set in the app) or COMMON (a provider's default name). Null when none was found.
Example:COMMON - status string
Status is one of OK, WARNING, MISSING, ERROR. MISSING means no key was found under the selectors in checkedSelectors: a provider that picks its own selector name can have DKIM working while this says MISSING. ERROR means a DNS lookup timed out; try again.
Example:OK
- dmarc DmarcCheckResult
4 fields inside dmarc
- issues array of string
- policy string
Policy is the record's p= tag, null when no record was found.
Example:reject - record stringExample:
v=DMARC1; p=reject; rua=mailto:dmarc@example.com - status string
Status is one of OK, WARNING, MISSING, ERROR.
Example:OK
- domain stringExample:
example.com 3 fields inside mx
- hosts array of string
Hosts are the domain's mail servers as "preference host", lowest preference (highest priority) first.
Example:["1 aspmx.l.google.com"] - issues array of string
- status string
Status is one of OK, WARNING, MISSING, ERROR.
Example:OK
- senderEmailId integerExample:
123 - spf SpfCheckResult
3 fields inside spf
- issues array of string
- record stringExample:
v=spf1 include:_spf.google.com ~all - status string
Status is one of OK, WARNING, MISSING, ERROR.
Example:OK
- warmup SenderEmailWarmupStatus
4 fields inside warmup
- cap integer
Cap is the configured maximum warm-up emails per day; the ramp stops there. 0 while the mailbox has never been enrolled.
Example:10 - currentPerDay integer
CurrentPerDay is today's warm-up ramp target (warm-up emails per day), 0 while not enrolled. On weekends of a weekdays-only account the ramp value still shows even though no warm-up emails send that day.
Example:6 - enrolled boolean
Enrolled is true while the mailbox has warm-up enabled.
Example:true - healthScore integer
Health score 0-100, higher is better: the share of this account's warm-up emails over the last 7 full days that landed in the inbox rather than spam; 90+ is the app's bar for campaigns. It moves daily as warm-up emails land in the inbox (up) or in spam (down). Null while warm-up is off or before 20 warm-up emails were checked.
Example:96
Request
curl -X GET "https://api.emailchaser.com/r/sender-emails/123/dns" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"checkedAt": "2026-07-31T10:30:00Z",
"dkim": {
"checkedSelectors": [
"string"
],
"issues": [
"string"
],
"record": "v=DKIM1; k=rsa; p=MIGfMA0GCSq",
"selector": "google",
"selectorSource": "COMMON",
"status": "OK"
},
"dmarc": {
"issues": [
"string"
],
"policy": "reject",
"record": "v=DMARC1; p=reject; rua=mailto:dmarc@example.com",
"status": "OK"
},
"domain": "example.com",
"mx": {
"hosts": [
"1 aspmx.l.google.com"
],
"issues": [
"string"
],
"status": "OK"
},
"senderEmailId": 123,
"spf": {
"issues": [
"string"
],
"record": "v=spf1 include:_spf.google.com ~all",
"status": "OK"
},
"warmup": {
"cap": 10,
"currentPerDay": 6,
"enrolled": true,
"healthScore": 96
}
}Get a sender email's warm-up settings
Returns the mailbox's warm-up configuration: whether warm-up is on, the ramp (startLimit warm-up emails on the first day, increaseBy more each day, up to capLimit a day), weekdays-only, timezone, today's ramp target (currentPerDay) and the account's health score (healthScore, 0-100, higher is better: the share of its warm-up emails over the last 7 full days that landed in the inbox rather than spam; null while warm-up is off or before 20 were checked). Warm-up volume is separate from the campaign sending limits on the sender email. When configured is false the mailbox has never been enrolled, and the values shown are the defaults that switching warm-up on would use.
Parameters
- id integer required in path
Sender Email ID
Responses
- 200 Warm-up settings · SenderEmailWarmupSettingsResponse
- 400 Invalid sender email ID · ErrorInvalidSenderEmailID
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Sender email not found · ErrorSenderEmailNotFound
- 500 Failed to get warm-up settings · ErrorFailedToGetWarmupSettings
Fields in the 200 response
- activatedAt string
ActivatedAt is when warm-up was first switched on; the ramp counts days from here. Null until then.
Example:2026-09-10T12:00:00Z - capLimit integer
CapLimit is the most warm-up emails a day; the ramp stops here.
Example:40 - configured boolean
Configured is true once the mailbox has warm-up settings of its own. While false the mailbox has never been enrolled, and the values below are the defaults that switching warm-up on would use.
Example:true - currentPerDay integer
CurrentPerDay is today's ramp target, 0 while warm-up is off. On a weekend a weekdays-only mailbox still shows its ramp value, although no warm-up emails send that day.
Example:6 - enableReplies boolean
EnableReplies lets warm-up recipients reply, adding reply signals.
Example:false - enabled boolean
Enabled is true while the mailbox is warming.
Example:true - healthScore integer
Health score 0-100, higher is better: the share of this account's warm-up emails over the last 7 full days that landed in the inbox rather than spam; 90+ is the app's bar for campaigns. It moves daily as warm-up emails land in the inbox (up) or in spam (down). Null while warm-up is off or before 20 warm-up emails were checked.
Example:96 - increaseBy integer
IncreaseBy is how many warm-up emails are added each day until CapLimit.
Example:2 - senderEmailId integerExample:
123 - startLimit integer
StartLimit is how many warm-up emails go out on the first day.
Example:2 - timezone string
Timezone is the IANA timezone the warm-up send window runs in.
Example:UTC - weekdaysOnly boolean
WeekdaysOnly limits warm-up sending to Monday through Friday.
Example:true
Request
curl -X GET "https://api.emailchaser.com/r/sender-emails/123/warmup" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"activatedAt": "2026-09-10T12:00:00Z",
"capLimit": 40,
"configured": true,
"currentPerDay": 6,
"enableReplies": false,
"enabled": true,
"healthScore": 96,
"increaseBy": 2,
"senderEmailId": 123,
"startLimit": 2,
"timezone": "UTC",
"weekdaysOnly": true
}Update a sender email's warm-up settings
Switches warm-up on or off and changes the warm-up ramp. Only the fields provided change. Warm-up sends startLimit emails on the first day and adds increaseBy each day until it reaches capLimit a day; this volume is separate from the campaign sending limits on the sender email. Switching warm-up on for a mailbox that has never been enrolled enrols it with the defaults (2 a day, 2 more each day, up to 10 a day, weekdays only, UTC) overridden by any fields sent, and the ramp starts today; the mailbox must be connected. A mailbox that has never been enrolled needs enabled: true in the same request to take any other setting. Switching warm-up off keeps the settings and stops a reconnect from switching it back on. Raising capLimit on a mailbox that is already warming takes effect from the next scheduling run without restarting the ramp.
Parameters
- id integer required in path
Sender Email ID
Request bodyJSON · UpdateSenderEmailWarmupRequest
- capLimit integer
CapLimit is the most warm-up emails a day; the ramp stops here.
Minimum 1. Maximum 200. Example:40 - enableReplies boolean
EnableReplies lets warm-up recipients reply, adding reply signals.
Example:false - enabled boolean
Enabled switches warm-up on (true) or off (false). A mailbox that has never been enrolled needs enabled: true to take any other setting.
Example:true - increaseBy integer
IncreaseBy is how many warm-up emails are added each day until CapLimit.
Minimum 1. Maximum 50. Example:2 - startLimit integer
StartLimit is how many warm-up emails go out on the first day.
Minimum 1. Maximum 200. Example:2 - timezone string
Timezone is the IANA timezone the warm-up send window runs in.
Example:America/New_York - weekdaysOnly boolean
WeekdaysOnly limits warm-up sending to Monday through Friday.
Example:true
Responses
- 200 Warm-up settings after the change · SenderEmailWarmupSettingsResponse
- 400 Invalid sender email ID, request body or warm-up settings · ErrorInvalidWarmupSettings
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Sender email not found · ErrorSenderEmailNotFound
- 409 Warm-up is off for this mailbox and the request does not switch it on, or the mailbox is disconnected · ErrorWarmupSettingsConflict
- 500 Failed to update warm-up settings · ErrorFailedToUpdateWarmupSettings
Fields in the 200 response
- activatedAt string
ActivatedAt is when warm-up was first switched on; the ramp counts days from here. Null until then.
Example:2026-09-10T12:00:00Z - capLimit integer
CapLimit is the most warm-up emails a day; the ramp stops here.
Example:40 - configured boolean
Configured is true once the mailbox has warm-up settings of its own. While false the mailbox has never been enrolled, and the values below are the defaults that switching warm-up on would use.
Example:true - currentPerDay integer
CurrentPerDay is today's ramp target, 0 while warm-up is off. On a weekend a weekdays-only mailbox still shows its ramp value, although no warm-up emails send that day.
Example:6 - enableReplies boolean
EnableReplies lets warm-up recipients reply, adding reply signals.
Example:false - enabled boolean
Enabled is true while the mailbox is warming.
Example:true - healthScore integer
Health score 0-100, higher is better: the share of this account's warm-up emails over the last 7 full days that landed in the inbox rather than spam; 90+ is the app's bar for campaigns. It moves daily as warm-up emails land in the inbox (up) or in spam (down). Null while warm-up is off or before 20 warm-up emails were checked.
Example:96 - increaseBy integer
IncreaseBy is how many warm-up emails are added each day until CapLimit.
Example:2 - senderEmailId integerExample:
123 - startLimit integer
StartLimit is how many warm-up emails go out on the first day.
Example:2 - timezone string
Timezone is the IANA timezone the warm-up send window runs in.
Example:UTC - weekdaysOnly boolean
WeekdaysOnly limits warm-up sending to Monday through Friday.
Example:true
Request
curl -X PUT "https://api.emailchaser.com/r/sender-emails/123/warmup" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"capLimit": 40,
"enableReplies": false,
"enabled": true,
"increaseBy": 2,
"startLimit": 2,
"timezone": "America/New_York",
"weekdaysOnly": true
}'Response
{
"activatedAt": "2026-09-10T12:00:00Z",
"capLimit": 40,
"configured": true,
"currentPerDay": 6,
"enableReplies": false,
"enabled": true,
"healthScore": 96,
"increaseBy": 2,
"senderEmailId": 123,
"startLimit": 2,
"timezone": "UTC",
"weekdaysOnly": true
}Generated from the Emailchaser API's own OpenAPI definition, so it always matches the running API.