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

# List senders

> Lists connected email mailboxes and LinkedIn accounts. No passwords or tokens are returned.

Permission: `senders:read`



## OpenAPI

````yaml openapi/emailx.en.json GET /workspaces/{workspace_id}/senders
openapi: 3.0.3
info:
  title: Emailx API
  version: 1.0.0-beta
  description: >-
    Customer and agency integrations for Emailx. Beta access is operator-issued.
    The v1 beta supports bounded People CSV/XLSX imports, saved email-template
    settings, selected email generation with explicit AI-credit confirmation,
    exact-message approval, reviewed email activation for native scheduled
    sending, and explicitly confirmed inbox replies bound to saved context when
    host capabilities permit. Inbox context is bounded and may be incomplete or
    stale; no provider refresh occurs. Manual LinkedIn imports, reviewed
    activation and reviewed resume of paused campaigns are separate gated
    workflows. Reply drafts, knowledge, team, infrastructure quotes with hosted
    checkout and agency administration are covered by separate scopes. Signed
    webhooks report durable operation outcomes. It does not support immediate
    batches or direct card charges.
servers:
  - url: https://app.emailx.ai/api/v1
    description: Emailx application · access must be enabled
security: []
tags:
  - name: Getting started
  - name: Workspaces
  - name: Contacts
  - name: Templates
  - name: Campaigns
  - name: Inbox
  - name: Senders
  - name: Team
  - name: Analytics
  - name: Imports
  - name: Operations
  - name: Knowledge
  - name: Infrastructure
  - name: Agency
paths:
  /workspaces/{workspace_id}/senders:
    get:
      tags:
        - Senders and warmup
      summary: List senders
      description: >-
        Lists connected email mailboxes and LinkedIn accounts. No passwords or
        tokens are returned.


        Permission: `senders:read`
      operationId: list_api_senders
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
          description: Emailx workspace (Clients) ID, not the agency workspace link ID.
        - name: channel
          in: query
          required: true
          schema:
            type: string
            enum:
              - email
              - linkedin
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: cursor
          in: query
          schema:
            type: string
          description: >-
            Opaque next_cursor from the previous response. Keep filters
            unchanged.
      responses:
        '200':
          description: Success
          headers:
            X-Request-Id:
              schema:
                type: string
            Emailx-Api-Version:
              schema:
                type: string
            X-RateLimit-Limit:
              schema:
                type: string
            X-RateLimit-Remaining:
              schema:
                type: string
            X-RateLimit-Reset:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SenderList'
              example:
                data:
                  - id: 903
                    channel: linkedin
                    name: Example sender
                    active: true
                    needs_reauth: false
                    status_source: stored_connection
                has_more: false
                next_cursor: null
        '400':
          description: Request error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Invalid, expired or revoked API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient scope or write permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource missing or inaccessible
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict, concurrent request or uncertain original result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            Retry-After:
              schema:
                type: string
              description: Seconds to wait when present.
        '413':
          description: Request error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          description: Request error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited; respect Retry-After
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            Retry-After:
              schema:
                type: string
              description: Seconds to wait when present.
        '500':
          description: Request error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: API disabled, request storage unavailable or feature not enabled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            Retry-After:
              schema:
                type: string
              description: Seconds to wait when present.
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: cURL
          source: >-
            curl -X GET
            "https://app.emailx.ai/api/v1/workspaces/123/senders?channel=linkedin"
            \
              -H "Authorization: Bearer $EMAILX_API_KEY"
        - lang: Python
          source: |-
            import os, requests

            response = requests.get(
                "https://app.emailx.ai/api/v1/workspaces/123/senders?channel=linkedin",
                headers={"Authorization": "Bearer " + os.environ["EMAILX_API_KEY"]},
                timeout=30,
            )
            response.raise_for_status()
            print(response.json())
        - lang: JavaScript
          source: >-
            const response = await
            fetch("https://app.emailx.ai/api/v1/workspaces/123/senders?channel=linkedin",
            {
              method: "GET",
              headers: { Authorization: `Bearer ${process.env.EMAILX_API_KEY}` },
              signal: AbortSignal.timeout(30000),
            });

            if (!response.ok) throw new Error(`Emailx: ${response.status}`);

            console.log(await response.json());
components:
  schemas:
    SenderList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Sender'
        has_more:
          type: boolean
        next_cursor:
          type: string
          nullable: true
      required:
        - data
        - has_more
        - next_cursor
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            request_id:
              type: string
            details:
              type: object
              additionalProperties: true
          required:
            - code
            - message
            - request_id
      required:
        - error
    Sender:
      type: object
      properties:
        id:
          type: integer
          minimum: 1
        channel:
          type: string
          enum:
            - email
            - linkedin
        name:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        profile_url:
          type: string
          nullable: true
        active:
          type: boolean
        needs_reauth:
          type: boolean
        status_source:
          type: string
          enum:
            - stored_connection
        workspace_id:
          type: integer
          minimum: 1
        owner_subclient_id:
          type: integer
          minimum: 1
          nullable: true
        actor_can_use:
          type: boolean
        readiness:
          type: string
          enum:
            - blocked
            - requires_review
        blockers:
          type: array
          items:
            type: string
            enum:
              - read_only
              - workspace_inactive
              - sender_not_authorized
              - sender_owner_inactive
              - sender_inactive
              - reauthorization_required
              - subscription_inactive
              - linkedin_seat_not_included
        provider_verified:
          type: boolean
          enum:
            - false
        evaluated_at:
          type: string
          format: date-time
      required:
        - id
        - channel
        - active
        - status_source
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        ex_test_ or ex_live_ key issued by an Emailx operator. Never use
        provider keys or session cookies.

````

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