> ## Documentation Index
> Fetch the complete documentation index at: https://developer.lemlist.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Lists the mailboxes lemwarm keeps out of warmup, with the cause and the fix for each one.

# Get warmup errors

export const SnippetObjectReference = ({objectName, objectPath = null}) => {
  const lowerCaseObjectName = objectName.toLowerCase();
  if (lowerCaseObjectName === 'lead' || lowerCaseObjectName === 'leads') {
    return <Note>
        This endpoint uses the <a href={`/api-reference/objects-definitions/${objectPath}`}>{objectName} object</a>. Make sure to also check the <a href={`/api-reference/objects-definitions/${lowerCaseObjectName === 'lead' ? 'contact' : 'lead'}`}>{lowerCaseObjectName === 'lead' ? 'Contact' : 'Lead'} object</a> to understand the distinction between the two.
      </Note>;
  }
  return <Note>
      This endpoint uses the <a href={`/api-reference/objects-definitions/${objectPath}`}>{objectName} object</a>.
    </Note>;
};

<SnippetObjectReference objectName="Warmup Error" objectPath="warmup-error" />

<Note>
  Only mailboxes with a recorded cause are returned: a disconnected mailbox, a DNS lock, a pause triggered by bounces or send failures, or a temporary high spam-rate lock. Healthy mailboxes and mailboxes you paused yourself are not listed.

  Once the cause is fixed, resume warmup with [Start lemwarm](/api-reference/endpoints/lemwarm/start-lemwarm), using `mailboxId` as the `userMailboxId`.
</Note>

<Warning>
  This endpoint is in closed beta. It answers `403` with the code `BETA_NOT_ENABLED` unless the warmup error guidance beta is enabled for your team.
</Warning>


## OpenAPI

````yaml get /lemwarm/errors
openapi: 3.0.0
info:
  title: lemlist API
  version: 1.0.0
  description: >-
    Welcome to the lemlist Developer Documentation.


    lemlist is very customizable and open. You'll find on this page all the API
    and integration you can do with lemlist.


    # Rate Limit


    lemlist's API rate limits requests in order to prevent abuse and overload of
    our services.  

    Rate limits are applied on all routes and per API key performing the
    request.  

    The rate limits are **20** requests per **2** seconds.  

    The response provides any information you may need about it:


    | Header | Description |

    | --- | --- |

    | Retry-After | The number of seconds in which you can retry |

    | X-RateLimit-Limit | The maximum requests in that time |

    | X-RateLimit-Remaining | The number of remaining requests you can make |

    | X-RateLimit-Reset | The date when the rate limit will reset |


    _Example of values for the rate limit headers_


    ``` json

    {
        "Retry-After": 2,
        "X-RateLimit-Limit": 20,
        "X-RateLimit-Remaining": 7,
        "X-RateLimit-Reset" : "Tue Feb 16 2021 09:02:42 GMT+0100 (Central European Standard Time)"
    }

     ```

    # Definitions


    ## Team


    A team is the entity of lemlist that can handle users and billing.


    ## Credits


    Credits are the coins a team uses to enrich emails, LinkedIn URLs, etc. via
    the enrich route. Each enrichment feature needs a certain amount of credits
    to run.


    ## User


    You use a user account to connect to lemlist and send messages via the
    connected emails or LinkedIn account.


    ## Campaign


    A campaign is the entity to automate outreach. A campaign has multiple
    sequences composed of steps.


    ## Lead


    A lead is a person that you try to contact via a campaign.


    ## Activity


    An activity is the history of all the steps.


    ## Unsubscribe


    An unsubscribe occurs when a person decides they don't want to receive
    emails from you anymore.


    # Authentication


    All API routes use the dedicated subdomain `api.lemlist.com`.


    lemlist uses API keys to allow access to the API. You can get your lemlist
    API key at our [integration
    page](https://app.lemlist.com/settings/integrations).


    You need to add the `Authorization` header using the `Basic` authentication
    type. `login:password` **where the login is always empty and the password is
    the API key**.


    ⚠️ **Don't forget to add the semicolon (**`:`**) before your API key in curl
    command.**


    > To authorize, use this code: 
      

    ``` shell

    curl https://api.lemlist.com/api/team \
      --user ":YourApiKey"

     ```

    **Make sure to replace** **`YourApiKey`** **with your API key.**


    # Give feedback


    If you want to report a bug, ask for data, or share with us a use case,
    please fill this [form](https://lemlist.typeform.com/to/mfVlkyGf). It will
    help us centralize your needs!
servers:
  - url: https://api.lemlist.com/api
security:
  - basicAuth: []
tags:
  - name: Enrichment Providers
    description: >-
      The data providers lemlist can call to find an email or a phone.


      Internal providers are paid with lemlist credits and always available.
      External providers run on your own account: connect one by saving its API
      key, and it becomes available to your waterfalls. `GET
      /enrichments/providers` is the catalog of provider ids accepted by the
      waterfall endpoints.
  - name: Enrichment Waterfalls
    description: >-
      Control which data providers lemlist calls when enriching a contact, and
      in which order.


      A waterfall is an ordered list of providers for one enrichment `type`
      (`email` or `phone`). Providers are tried one after the other until one
      returns a result.


      Every team has exactly one default waterfall per type (`isDefault: true`).
      While its `editor` is `lemlist` it follows the lemlist behaviour:
      providers you connected with your own API key are tried first, then
      internal providers in a random order. Once a team member edits its
      provider list, `editor` becomes that user's id and the list is followed as
      is; resetting it hands it back to `lemlist`.


      Custom waterfalls (`isDefault: false`) carry `conditions` on the contact
      being enriched, keyed by contact property; every key present must match.
      When a contact is enriched, lemlist runs a single waterfall: the custom
      waterfall of the requested type whose conditions match the contact, or the
      default waterfall when none does. If several match, the one with the most
      condition keys wins, then the most recently updated. Only that waterfall
      runs; when it finds nothing, the enrichment ends without falling back to
      another one.
paths:
  /lemwarm/errors:
    get:
      tags:
        - lemwarm
      summary: Get warmup errors
      description: >-
        Lists the mailboxes of your team that lemwarm keeps out of warmup, with
        the cause and the fix for each one. Paused mailboxes come first, then
        warnings (temporary locks), newest first. Healthy or manually paused
        mailboxes are not returned.
      parameters: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/WarmupErrorsResponse'
              example:
                data:
                  errors:
                    - mailboxId: usm_ssaV1cwVs8iEW9IYO
                      userId: usr_P0w2DKRAQZitHjkdV
                      email: john@example.com
                      state: paused
                      since: '2025-04-09T13:34:43.998Z'
                      key: ERR_REP_10001
                      code: ERR_REP_10001
                      family: reputation
                      action: resume
                      title: Low sender reputation on john@example.com
                      whatHappened: >-
                        Several warmup emails bounced because recipient email
                        providers rated the reputation of this mailbox too low.
                        lemwarm paused warmup to protect your domain.
                      whatToCheck: >-
                        Your recent sending volume, bounce rate and content on
                        this mailbox. Lower the warmup volume before resuming.
        '401':
          description: The authentication you supplied is incorrect
          content:
            text/plain:
              example: The authentication you supplied is incorrect
        '403':
          description: >-
            `BETA_NOT_ENABLED` - the warmup error guidance beta is not enabled
            for this team
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              examples:
                betaNotEnabled:
                  value:
                    error: Beta is not enabled
                    code: BETA_NOT_ENABLED
        '405':
          description: '`ROUTE_BAD_METHOD` - only GET is allowed'
components:
  schemas:
    WarmupErrorsResponse:
      type: object
      description: Warmup errors of the team.
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/WarmupError'
      required:
        - errors
    WarmupError:
      type: object
      description: A mailbox kept out of warmup, with the cause and the fix.
      properties:
        mailboxId:
          type: string
          description: >-
            The user mailbox id. Use it as `userMailboxId` to resume warmup with
            [Start lemwarm](/api-reference/endpoints/lemwarm/start-lemwarm).
          example: usm_ssaV1cwVs8iEW9IYO
        userId:
          type: string
          description: The owner of the mailbox.
          example: usr_P0w2DKRAQZitHjkdV
        email:
          type: string
          description: The sending address of the mailbox.
          example: john@example.com
        state:
          type: string
          enum:
            - paused
            - warning
          description: >-
            `paused`: warmup is stopped until the cause is fixed. `warning`:
            temporary lock, warmup resumes on its own.
        since:
          type: string
          format: date-time
          description: >-
            When the cause was recorded. Absent when the state carries no date
            (DNS lock).
        key:
          type: string
          enum:
            - ERR_REP_10001
            - ERR_REP_10002
            - ERR_REP_10003
            - ERR_REP_10004
            - ERR_REP_10005
            - ERR_REP_10006
            - ERR_REP_10008
            - ERR_REP_10009
            - ERR_REP_10010
            - ERR_SETUP_10001
            - ERR_SETUP_10002
            - ERR_SETUP_10003
            - ERR_SETUP_10004
            - ERR_SETUP_10005
            - ERR_SETUP_10006
            - ERR_SETUP_10007
            - ERR_SETUP_10008
            - ERR_SETUP_10009
            - ERR_SETUP_10010
            - ERR_SETUP_10011
            - ERR_SETUP_10012
            - ERR_SETUP_10013
            - ERR_SETUP_10014
            - ERR_SETUP_10015
            - ERR_SETUP_10016
            - ERR_SETUP_10017
            - ERR_SETUP_10018
            - ERR_SETUP_10019
            - ERR_SETUP_10020
            - ERR_PROV_10002
            - ERR_PROV_10003
            - ERR_PROV_10004
            - ERR_PROV_10005
            - ERR_PROV_10006
            - ERR_PROV_10007
            - ERR_PROV_10008
            - ERR_PROV_10009
            - ERR_PROV_10010
            - MAILBOX_DISCONNECTED
            - DNS_LOCKED
            - EMAIL_FAILED
            - HIGH_SPAM_LOCK
          description: >-
            The catalogued cause. Absent when the stored code is not catalogued
            yet; `code` then holds the raw value.
        code:
          type: string
          description: The raw code shown in the lemlist notification, for support.
        family:
          type: string
          enum:
            - disconnected
            - setup
            - reputation
            - provider
            - unknown
          description: Group of causes.
        action:
          type: string
          enum:
            - reconnect
            - checkTechSetup
            - resume
          description: >-
            The one-click fix in the app: reconnect the mailbox, run the
            technical setup audit, or resume warmup. Absent when only support
            can help.
        title:
          type: string
          description: Short description of the cause.
        whatHappened:
          type: string
          description: What lemwarm observed.
        whatToCheck:
          type: string
          description: What to verify before resuming warmup.
      required:
        - mailboxId
        - userId
        - email
        - state
        - code
        - family
        - title
        - whatHappened
        - whatToCheck
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.