Sender Emails

The mailboxes your campaigns send from: list and connect them, check their DNS, health and warm-up.

List sender emails

get https://api.emailchaser.com/r/sender-emails
Works with a read-only key

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.

  • 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

Fields in the 200 response
  • hasMore boolean
  • limit integer
  • page integer
  • senderEmails array of SenderEmailListItem
    15 fields inside senderEmails
    • address string
      Example: john@example.com
    • campaignIds array of integer
      Example: [1,2,3]
    • createdAt string
      Example: 2024-01-10T10:30:00Z
    • currentDailyLimit integer
      Example: 35
    • familyName string
      Example: Doe
    • givenName string
      Example: 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 integer
      Example: 123
    • isConnected boolean
      Example: true
    • manuallyDisconnected boolean
      Example: false
    • maximumSendingsLimitPerDay integer
      Example: 50
    • minimumSendingsLimitPerDay integer
      Example: 20
    • provider string
      Example: google
    • toggleGradualBuildUp boolean
      Example: true
    • updatedAt string
      Example: 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

post https://api.emailchaser.com/r/sender-emails

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.

  • email string required
  • firstName string
    At 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 string
    At most 255 characters
  • loginString string

    LoginString defaults to the email address when omitted, which is what most providers expect.

  • password string required
    At least 1 characters
  • smtpServerUrl string required
    At least 1 characters
Fields in the 201 response
  • message string
    Example: sender email connected successfully
  • senderEmail SenderEmailResponse
    23 fields inside senderEmail
    • address string
      Example: john@example.com
    • campaignIds array of integer
      Example: [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 string
      Example: 2024-01-10T10:30:00Z
    • currentDailyLimit integer
      Example: 35
    • errorCode string
      Example: AUTH_FAILED
    • errorMessage string
      Example: Authentication failed
    • familyName string
      Example: Doe
    • givenName string
      Example: 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 integer
      Example: 123
    • isConnected boolean
      Example: true
    • lastDisconnectedAt string
      Example: 2024-01-15T10:30:00Z
    • lastReconnectedAt string
      Example: 2024-01-16T09:00:00Z
    • manuallyDisconnected boolean
      Example: false
    • maximumSendingsLimitPerDay integer
      Example: 50
    • minimumSendingsLimitPerDay integer
      Example: 20
    • pictureUrl string
      Example: https://example.com/avatar.jpg
    • provider string
      Example: google
    • provisioningStatus string
      Example: complete
    • signature string
      Example: Best regards, John Doe
    • toggleGradualBuildUp boolean
      Example: true
    • updatedAt string
      Example: 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

get https://api.emailchaser.com/r/sender-emails/{id}
Works with a read-only key

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.

  • id integer required in path

    Sender Email ID

Fields in the 200 response
  • address string
    Example: john@example.com
  • campaignIds array of integer
    Example: [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 integer
      Example: 10
    • createdAt string
      Example: 2024-01-15T10:30:00Z
    • disconnectionReason string
      Example: token_expired
    • errorCode string
      Example: AUTH_FAILED
    • errorMessage string
      Example: Token has expired
    • eventType string
      Example: disconnected
    • id integer
      Example: 456
    • userId integer
      Example: 5
  • createdAt string
    Example: 2024-01-10T10:30:00Z
  • currentDailyLimit integer
    Example: 35
  • errorCode string
    Example: AUTH_FAILED
  • errorMessage string
    Example: Authentication failed
  • familyName string
    Example: Doe
  • givenName string
    Example: 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 integer
    Example: 123
  • isConnected boolean
    Example: true
  • lastDisconnectedAt string
    Example: 2024-01-15T10:30:00Z
  • lastReconnectedAt string
    Example: 2024-01-16T09:00:00Z
  • manuallyDisconnected boolean
    Example: false
  • maximumSendingsLimitPerDay integer
    Example: 50
  • minimumSendingsLimitPerDay integer
    Example: 20
  • pictureUrl string
    Example: https://example.com/avatar.jpg
  • provider string
    Example: google
  • provisioningStatus string
    Example: complete
  • signature string
    Example: Best regards, John Doe
  • toggleGradualBuildUp boolean
    Example: true
  • updatedAt string
    Example: 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

put https://api.emailchaser.com/r/sender-emails/{id}

Updates an existing sender email's information. Only provided fields will be updated. Can update name, signature, and daily sending limits.

  • id integer required in path

    Sender Email ID

  • currentDailyLimit integer
    Minimum 0. Maximum 1000
  • familyName string
    At most 255 characters
  • givenName string
    At least 1 characters. At most 255 characters
  • maximumSendingsLimitPerDay integer

    Daily sending limits

    Minimum 1. Maximum 1000
  • minimumSendingsLimitPerDay integer
    Minimum 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.

Fields in the 200 response
  • message string
    Example: sender email updated successfully
  • senderEmail SenderEmailResponse
    23 fields inside senderEmail
    • address string
      Example: john@example.com
    • campaignIds array of integer
      Example: [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 string
      Example: 2024-01-10T10:30:00Z
    • currentDailyLimit integer
      Example: 35
    • errorCode string
      Example: AUTH_FAILED
    • errorMessage string
      Example: Authentication failed
    • familyName string
      Example: Doe
    • givenName string
      Example: 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 integer
      Example: 123
    • isConnected boolean
      Example: true
    • lastDisconnectedAt string
      Example: 2024-01-15T10:30:00Z
    • lastReconnectedAt string
      Example: 2024-01-16T09:00:00Z
    • manuallyDisconnected boolean
      Example: false
    • maximumSendingsLimitPerDay integer
      Example: 50
    • minimumSendingsLimitPerDay integer
      Example: 20
    • pictureUrl string
      Example: https://example.com/avatar.jpg
    • provider string
      Example: google
    • provisioningStatus string
      Example: complete
    • signature string
      Example: Best regards, John Doe
    • toggleGradualBuildUp boolean
      Example: true
    • updatedAt string
      Example: 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

get https://api.emailchaser.com/r/sender-emails/{id}/dns
Works with a read-only key

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.

  • id integer required in path

    Sender Email ID

Fields in the 200 response
  • checkedAt string

    CheckedAt is when the live DNS lookups ran (this request).

    Example: 2026-07-31T10:30:00Z
  • 6 fields inside dkim
    • checkedSelectors array of string

      CheckedSelectors is every selector name looked up, in the order tried.

    • issues array of string
    • record string
      Example: 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
  • 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 string
      Example: v=DMARC1; p=reject; rua=mailto:dmarc@example.com
    • status string

      Status is one of OK, WARNING, MISSING, ERROR.

      Example: OK
  • domain string
    Example: 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 integer
    Example: 123
  • 3 fields inside spf
    • issues array of string
    • record string
      Example: v=spf1 include:_spf.google.com ~all
    • status string

      Status is one of OK, WARNING, MISSING, ERROR.

      Example: OK
  • 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

get https://api.emailchaser.com/r/sender-emails/{id}/warmup
Works with a read-only key

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.

  • id integer required in path

    Sender Email ID

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 integer
    Example: 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

put https://api.emailchaser.com/r/sender-emails/{id}/warmup

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.

  • id integer required in path

    Sender Email ID

  • 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
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 integer
    Example: 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.