> ## 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 team members who can send, with their channels and the health of each channel.

# List Senders

<Tip>
  To pin the sender of one step, outside the pool, see
  [Set Step Sender](/api-reference/endpoints/sequences/set-step-sender) in the
  Sequences group.
</Tip>

Use this endpoint to get the ids that the sender pool endpoints need: the user
ids, the mailbox ids, the WhatsApp account ids, the phone numbers and the
aliases of each mailbox.

* Each channel is evaluated as if a campaign used it. A disconnected account
  shows its diagnostic even when no campaign uses it.
* With `campaignId`:
  * `inPool` tells whether the campaign pool enables each sender and each
    channel.
  * `requiredChannelTypes` lists the channel types that the campaign steps use.
    Only these types can be enabled in the pool.
  * On a dynamic sender strategy, the list keeps only the senders and the
    channels that the sender exclusion list of the campaign allows.

The `diagnostics` codes are the same as in
[Get Campaign Senders](/api-reference/endpoints/senders/get-campaign-senders#diagnostics).


## OpenAPI

````yaml get /senders
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:
  /senders:
    get:
      tags:
        - Senders
      summary: List Senders
      description: >-
        Lists the team members who can send, with their channels and the health
        of each channel. With `campaignId`, each sender and each channel tells
        whether the campaign pool enables it.
      parameters:
        - name: campaignId
          in: query
          required: false
          description: >-
            Adds `inPool`, the sender strategy and the channel types that the
            campaign steps use
          example: cam_A1b2C3d4E5f6G7h8M
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/SenderList'
              example:
                data:
                  campaignId: cam_A1b2C3d4E5f6G7h8M
                  senderStrategy: random
                  requiredChannelTypes:
                    - email
                    - whatsapp
                  senders:
                    - userId: usr_A1b2C3d4E5f6G7h8K
                      name: John Doe
                      email: john@example.com
                      inPool: true
                      channels:
                        - type: email
                          id: usm_A1b2C3d4E5f6G7h8L
                          label: john@example.com
                          aliases:
                            - hello@example.com
                          esp: google
                          inPool: true
                          diagnostics: []
                      diagnostics:
                        - scope: user
                          type: error
                          code: no_required_channel_active
                          channelType: whatsapp
                    - userId: usr_A1b2C3d4E5f6G7h8N
                      name: Jane Smith
                      email: jane@example.com
                      inPool: false
                      channels:
                        - type: email
                          id: usm_A1b2C3d4E5f6G7h8P
                          label: jane@example.com
                          esp: microsoft
                          inPool: false
                          diagnostics: []
                        - type: whatsapp
                          id: uwa_A1b2C3d4E5f6G7h8Q
                          label: '+15550100199'
                          inPool: false
                          diagnostics: []
                      diagnostics: []
        '400':
          description: Malformed campaign id
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message
                  code:
                    type: string
                    description: Machine-readable error code
              example:
                error: Wrong param campaign id
                code: WRONG_PARAM_CAMPAIGN_ID
        '401':
          description: The authentication you supplied is incorrect
          content:
            text/plain:
              example: The authentication you supplied is incorrect
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message
                  code:
                    type: string
                    description: Machine-readable error code
              example:
                error: Campaign not found
                code: SENDER_CAMPAIGN_NOT_FOUND
        '405':
          description: Method not allowed
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message
                  code:
                    type: string
                    description: Machine-readable error code
              example:
                error: Route bad method
                code: ROUTE_BAD_METHOD
components:
  schemas:
    SenderList:
      type: object
      description: The team members who can send, with their channels.
      properties:
        campaignId:
          type: string
          description: With `campaignId` only.
        senderStrategy:
          type: string
          description: With `campaignId` only. The sender strategy of the campaign.
        requiredChannelTypes:
          type: array
          description: >-
            With `campaignId` only. The channel types that the campaign steps
            use. Only these types can be enabled in the pool.
          items:
            type: string
            enum:
              - email
              - linkedin
              - whatsapp
              - phone
        senders:
          type: array
          items:
            type: object
            properties:
              userId:
                type: string
              name:
                type: string
              email:
                type: string
              inPool:
                type: boolean
                description: >-
                  With `campaignId` only. `true` when the sender is in the pool
                  of the campaign.
              channels:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - email
                        - linkedin
                        - whatsapp
                        - phone
                    id:
                      type: string
                      description: >-
                        The mailbox id, the WhatsApp account id, the phone
                        number, or the user id for LinkedIn.
                    label:
                      type: string
                    aliases:
                      type: array
                      description: 'Email only: the alias addresses of the mailbox.'
                      items:
                        type: string
                    esp:
                      type: string
                      enum:
                        - google
                        - microsoft
                        - smtp
                      description: 'Email only: the provider of the mailbox.'
                    inPool:
                      type: boolean
                      description: >-
                        With `campaignId` only. `true` when the pool enables the
                        channel.
                    diagnostics:
                      type: array
                      description: >-
                        The problems that block or limit the sending. See [Get
                        Campaign
                        Senders](/api-reference/endpoints/senders/get-campaign-senders#diagnostics).
                      items:
                        $ref: '#/components/schemas/SenderDiagnostic'
              diagnostics:
                type: array
                description: >-
                  The problems that block or limit the sending. See [Get
                  Campaign
                  Senders](/api-reference/endpoints/senders/get-campaign-senders#diagnostics).
                items:
                  $ref: '#/components/schemas/SenderDiagnostic'
    SenderDiagnostic:
      type: object
      description: One health problem of a sender, a channel or the whole pool.
      properties:
        scope:
          type: string
          enum:
            - channel
            - user
            - step
            - global
          description: >-
            What the problem is about: one channel, one sender, one step or the
            whole pool.
        type:
          type: string
          enum:
            - error
            - warning
            - info
          description: '`error` blocks the sending. `warning` and `info` do not.'
        code:
          type: string
          enum:
            - channel_missing
            - channel_disconnected
            - channel_linked_elsewhere
            - channel_issue
            - channel_not_required
            - license_missing
            - no_required_channel_active
            - no_account_connected
            - no_sender_enabled
            - sender_paused
        message:
          type: string
          description: More details, for example the error of a mailbox.
        channelType:
          type: string
          enum:
            - email
            - linkedin
            - whatsapp
            - phone
          description: >-
            The channel type of the problem. Absent when the problem is not
            about one channel type.
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic

````

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