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

# List the caller's own SMS conversations, one row per thread

> Lists the caller's own SMS conversations, one row per thread. Each row includes the most recent message in the thread, its unread inbound count, and the eSIMs it was seen through. Optional `esimId` or `numberId` narrows to threads on one eSIM or number.

Cursor-paginated via `limit` (default 20, max 100) and `cursorLastOccurredAt`/`cursorLastMessageId` (both required together, taken from a previous page's `nextCursor`). Pagination follows each thread's most recent activity rather than a fixed snapshot, so a thread with new activity can move ahead of an in-progress page fetch. Clients that need a stable ordering should snapshot their own view.



## OpenAPI

````yaml /api-reference/mobilerun-numbers.yaml get /numbers/messages/conversations
openapi: 3.1.0
info:
  title: Mobilerun Numbers
  version: v1
servers:
  - description: Droidrun Cloud API
    url: https://api.mobilerun.ai/v1
security:
  - bearerAuth: []
paths:
  /numbers/messages/conversations:
    get:
      tags:
        - Messages
      summary: List the caller's own SMS conversations, one row per thread
      description: >-
        Lists the caller's own SMS conversations, one row per thread. Each row
        includes the most recent message in the thread, its unread inbound
        count, and the eSIMs it was seen through. Optional `esimId` or
        `numberId` narrows to threads on one eSIM or number.


        Cursor-paginated via `limit` (default 20, max 100) and
        `cursorLastOccurredAt`/`cursorLastMessageId` (both required together,
        taken from a previous page's `nextCursor`). Pagination follows each
        thread's most recent activity rather than a fixed snapshot, so a thread
        with new activity can move ahead of an in-progress page fetch. Clients
        that need a stable ordering should snapshot their own view.
      operationId: listConversations
      parameters:
        - in: query
          name: limit
          required: false
          schema:
            default: 20
            maximum: 100
            minimum: 1
            type: integer
        - in: query
          name: esimId
          required: false
          schema:
            format: uuid
            type: string
        - in: query
          name: numberId
          required: false
          schema:
            format: uuid
            type: string
        - in: query
          name: cursorLastOccurredAt
          required: false
          schema:
            format: date-time
            type: string
        - in: query
          name: cursorLastMessageId
          required: false
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListConversationsResponse'
          description: Conversations retrieved
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageErrorResponse'
          description: >-
            Service Unavailable — the relevant product is disabled for this
            deployment (see `reason`/`message`)
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import Mobilerun from '@mobilerun/sdk';

            const client = new Mobilerun({
              apiKey: process.env['MOBILERUN_CLOUD_API_KEY'], // This is the default and can be omitted
            });

            const conversations = await client.messages.conversations.list();

            console.log(conversations.items);
        - lang: Python
          source: |-
            import os
            from mobilerun_sdk import Mobilerun

            client = Mobilerun(
                api_key=os.environ.get("MOBILERUN_CLOUD_API_KEY"),  # This is the default and can be omitted
            )
            conversations = client.messages.conversations.list()
            print(conversations.items)
components:
  schemas:
    ListConversationsResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/ConversationRow'
          type: array
        nextCursor:
          $ref: '#/components/schemas/ConversationCursor'
      required:
        - items
        - nextCursor
      type: object
    MessageErrorResponse:
      properties:
        message:
          type: string
        reason:
          enum:
            - not_installed
            - missing_device
            - missing_subscription
            - idempotency_conflict
            - send_disabled
            - daily_cap_exceeded
            - rate_limited
            - product_disabled
          type: string
        success:
          enum:
            - false
          type: boolean
      required:
        - success
        - reason
        - message
      type: object
    ConversationRow:
      properties:
        esimIds:
          items:
            format: uuid
            type: string
          type: array
        lastMessage:
          $ref: '#/components/schemas/ConversationLastMessage'
        peerKey:
          type: string
        unreadCount:
          minimum: 0
          type: integer
      required:
        - peerKey
        - lastMessage
        - unreadCount
        - esimIds
      type: object
    ConversationCursor:
      properties:
        lastMessageId:
          format: uuid
          type: string
        lastOccurredAt:
          format: date-time
          type: string
      required:
        - lastOccurredAt
        - lastMessageId
      type:
        - object
        - 'null'
    ConversationLastMessage:
      properties:
        body:
          type:
            - string
            - 'null'
        direction:
          enum:
            - inbound
            - outbound
          type: string
        id:
          format: uuid
          type: string
        occurredAt:
          format: date-time
          type: string
        status:
          enum:
            - received
            - queued
            - claimed
            - sending
            - sent
            - sent_unconfirmed
            - delivered
            - failed
          type: string
      required:
        - id
        - direction
        - status
        - body
        - occurredAt
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: Opaque
      description: Bearer token via Authorization header
      scheme: bearer
      type: http

````