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

# List conversations

> Return paginated conversations ordered by last message time descending.
Use `next_cursor` from the response to fetch the next page.



## OpenAPI

````yaml /openapi.json get /api/v1/public/conversations
openapi: 3.1.0
info:
  description: >-
    Customer-facing API for managing outreach, leads, conversations, voice
    agents, knowledge bases, analytics, and webhooks.
  title: Sendora Public API
  version: 1.0.0
servers:
  - description: Production
    url: https://api.sendora.ai
security: []
tags:
  - description: Build, launch, pause and stop campaigns, and enroll leads.
    name: Campaigns
  - description: Create, update, tag, enrich and import leads.
    name: Leads
  - description: Group leads into reusable lists.
    name: Lead lists
  - description: Find new prospects and research existing leads.
    name: Prospecting
  - description: Read conversations and send messages to leads.
    name: Inbox
  - description: Manage workspace-wide suppressions.
    name: Do not contact
  - description: Manage the content your agents answer from.
    name: Knowledge bases
  - description: Create, configure, test and publish voice agents.
    name: Voice agents
  - description: Give agents actions such as booking, lookups and transfers.
    name: Agent tools
  - description: Embed a voice agent on your website.
    name: Voice widgets
  - description: Start voice calls and read call results.
    name: Calls
  - description: Browse and preview the voices an agent can use.
    name: Voices
  - description: List numbers, bring your own, and route calls.
    name: Phone numbers
  - description: List the channel accounts connected to the workspace.
    name: Connected accounts
  - description: Register endpoints and review deliveries.
    name: Webhooks
  - description: Drive the workspace assistant programmatically.
    name: Copilot
  - description: Read workspace and campaign performance.
    name: Analytics
  - description: Track asynchronous operations.
    name: Jobs
  - description: Manage client workspaces, plans and branding.
    name: Agency
paths:
  /api/v1/public/conversations:
    get:
      tags:
        - Inbox
      summary: List conversations
      description: |-
        Return paginated conversations ordered by last message time descending.
        Use `next_cursor` from the response to fetch the next page.
      operationId: public_list_conversations_api_v1_public_conversations_get
      parameters:
        - description: Filter by channel.
          in: query
          name: channel
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/MessageChannel'
              - type: 'null'
            description: Filter by channel
            title: Channel
        - description: 'Filter by traffic light: GREEN, YELLOW, RED'
          in: query
          name: traffic_light
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: 'Filter by traffic light: GREEN, YELLOW, RED'
            title: Traffic Light
        - description: Include archived conversations only
          in: query
          name: archived
          required: false
          schema:
            default: false
            description: Include archived conversations only
            title: Archived
            type: boolean
        - description: Search by lead name or message preview
          in: query
          name: search
          required: false
          schema:
            anyOf:
              - maxLength: 200
                minLength: 1
                type: string
              - type: 'null'
            description: Search by lead name or message preview
            title: Search
        - description: Pagination cursor from previous response next_cursor
          in: query
          name: cursor
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Pagination cursor from previous response next_cursor
            title: Cursor
        - in: query
          name: limit
          required: false
          schema:
            default: 50
            maximum: 100
            minimum: 1
            title: Limit
            type: integer
        - in: header
          name: X-API-Key
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Api-Key
        - in: header
          name: Authorization
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationListResponse'
          description: Successful Response
        '401':
          description: The X-API-Key header is missing, invalid, expired, or revoked.
        '402':
          description: >-
            The workspace is suspended for billing, or the request would exceed
            a plan or usage limit.
        '403':
          description: >-
            The key is valid but lacks the required scope, or the workspace has
            no active plan, lacks the entitlement, or has this feature turned
            off or view-only.
        '410':
          description: The workspace behind this key has been deleted.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
        '500':
          description: >-
            An unexpected Sendora error occurred. Retry only if the operation is
            safe to repeat.
        '503':
          description: >-
            An entitlement or billing check is temporarily unavailable. Retry
            after the Retry-After interval.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - label: cURL
          lang: bash
          source: >-
            curl -X GET 'https://api.sendora.ai/api/v1/public/conversations' -H
            "X-API-Key: $SENDORA_API_KEY"
        - label: Python
          lang: python
          source: |-
            import requests

            url = 'https://api.sendora.ai/api/v1/public/conversations'
            headers = {'X-API-Key': '$SENDORA_API_KEY'}
            response = requests.get(url, headers=headers)
            response.raise_for_status()
            print(response.json())
        - label: JavaScript
          lang: javascript
          source: >-
            const response = await
            fetch("https://api.sendora.ai/api/v1/public/conversations", {
              method: "GET",
              headers: { 'X-API-Key': process.env.SENDORA_API_KEY },
            });

            if (!response.ok) throw new Error(await response.text());

            console.log(await response.json());
        - label: Go
          lang: go
          source: >-
            req, err := http.NewRequest("GET",
            "https://api.sendora.ai/api/v1/public/conversations", nil)

            if err != nil { log.Fatal(err) }

            req.Header.Set("X-API-Key", os.Getenv("SENDORA_API_KEY"))

            resp, err := http.DefaultClient.Do(req)

            if err != nil { log.Fatal(err) }

            defer resp.Body.Close()
components:
  schemas:
    MessageChannel:
      enum:
        - EMAIL
        - LINKEDIN
        - WHATSAPP
        - SMS
        - VOICE
      title: MessageChannel
      type: string
    ConversationListResponse:
      description: >-
        Paginated list envelope.


        `next_cursor` is an opaque, AES-256-GCM-encrypted keyset position (see

        internal detail): pass it back as the ``cursor`` query

        param to get the next page. NULL when there are no more rows.


        `counts` carries the aggregate totals that drive the filter chips (per

        connected service, per traffic light, unread, escalated) for the
        tenant's WHOLE

        inbox. It is returned on the first page only. The frontend previously

        derived these by counting the rows it had already loaded, which meant
        the

        chips silently under-reported everything past the first page.
      properties:
        counts:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: Counts returned by the Sendora API.
          title: Counts
        items:
          description: Items returned by the Sendora API.
          items:
            $ref: '#/components/schemas/ConversationOut'
          title: Items
          type: array
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Next cursor returned by the Sendora API.
          title: Next Cursor
      required:
        - items
      title: ConversationListResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          description: Detail returned by the Sendora API.
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      required: []
      title: HTTPValidationError
      type: object
    ConversationOut:
      properties:
        automation_paused:
          default: false
          description: Automation paused returned by the Sendora API.
          title: Automation Paused
          type: boolean
        avatar_url:
          anyOf:
            - type: string
            - type: 'null'
          description: Avatar url returned by the Sendora API.
          title: Avatar Url
        channel:
          $ref: '#/components/schemas/MessageChannel'
          description: Channel returned by the Sendora API.
        connected_account_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: Always empty in API responses.
          title: Connected Account Id
        email:
          anyOf:
            - type: string
            - type: 'null'
          description: Email returned by the Sendora API.
          title: Email
        escalation_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: The open handoff request for this conversation, when one exists.
          title: Escalation Id
        id:
          description: >-
            The conversation's id. It is the lead's id: pass it to Get
            conversation thread.
          title: Id
          type: string
        is_active_campaign:
          default: false
          description: Is active campaign returned by the Sendora API.
          title: Is Active Campaign
          type: boolean
        is_archived:
          default: false
          description: Is archived returned by the Sendora API.
          title: Is Archived
          type: boolean
        last_message:
          anyOf:
            - type: string
            - type: 'null'
          description: Last message returned by the Sendora API.
          title: Last Message
        last_message_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: Last message at returned by the Sendora API.
          title: Last Message At
        lead_company:
          anyOf:
            - type: string
            - type: 'null'
          description: Lead company returned by the Sendora API.
          title: Lead Company
        lead_name:
          description: Lead name returned by the Sendora API.
          title: Lead Name
          type: string
        lead_title:
          anyOf:
            - type: string
            - type: 'null'
          description: Lead title returned by the Sendora API.
          title: Lead Title
        linkedin_url:
          anyOf:
            - type: string
            - type: 'null'
          description: Linkedin url returned by the Sendora API.
          title: Linkedin Url
        phone:
          anyOf:
            - type: string
            - type: 'null'
          description: Phone returned by the Sendora API.
          title: Phone
        pipeline_stage:
          anyOf:
            - type: string
            - type: 'null'
          description: Pipeline stage returned by the Sendora API.
          title: Pipeline Stage
        provider:
          anyOf:
            - enum:
                - linkedin
                - whatsapp
                - email
                - sms
                - voice
              type: string
            - type: 'null'
          description: connected service returned by the Sendora API.
          title: connected service
        recording_ref:
          anyOf:
            - type: string
            - type: 'null'
          description: Recording ref returned by the Sendora API.
          title: Recording Ref
        requires_attention:
          default: false
          description: Requires attention returned by the Sendora API.
          title: Requires Attention
          type: boolean
        thread_count:
          default: 1
          description: Thread count returned by the Sendora API.
          title: Thread Count
          type: integer
        traffic_light_status:
          anyOf:
            - $ref: '#/components/schemas/TrafficLight'
            - type: 'null'
          description: Traffic light status returned by the Sendora API.
        unread_count:
          default: 0
          description: Unread count returned by the Sendora API.
          title: Unread Count
          type: integer
      required:
        - id
        - lead_name
        - channel
      title: ConversationOut
      type: object
    ValidationError:
      properties:
        loc:
          description: Loc returned by the Sendora API.
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          description: Msg returned by the Sendora API.
          title: Message
          type: string
        type:
          description: Type returned by the Sendora API.
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    TrafficLight:
      enum:
        - GREEN
        - YELLOW
        - RED
      title: TrafficLight
      type: string
  securitySchemes:
    ApiKeyAuth:
      description: Customer API key created in the Sendora dashboard.
      in: header
      name: X-API-Key
      type: apiKey

````

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