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

# List a chat's messages (cursor-paginated)



## OpenAPI

````yaml /openapi.json get /api/public/v1/chats/{chatId}/messages
openapi: 3.1.0
info:
  title: VyomFlow API
  version: 1.0.0
  description: >-
    The versioned public REST surface (`/api/public/v1/*`, bearer API-key auth)
    plus the app's own internal `/api/v1/*` surface (Clerk session-token auth),
    generated directly from the same Zod contracts the Route Handlers validate
    against — never a hand-maintained duplicate. The MCP endpoint (`/api/mcp`)
    is a separate streamable-HTTP JSON-RPC transport, not expressible here — see
    the MCP guide.
servers:
  - url: https://api.vyomflow.co.in
    description: Production
  - url: http://localhost:3000
    description: Local development
security: []
paths:
  /api/public/v1/chats/{chatId}/messages:
    get:
      tags:
        - Public API
      summary: List a chat's messages (cursor-paginated)
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: chatId
          in: path
        - schema:
            type: string
          required: false
          name: cursor
          in: query
        - schema:
            type: integer
            exclusiveMinimum: 0
          required: false
          name: limit
          in: query
      responses:
        '200':
          description: Page of messages, oldest-to-newest within the page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListMessagesResponse'
        '401':
          description: Missing, invalid, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Valid key missing the required `chats:read` scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found (non-leaking — see above).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - ApiKeyAuth:
            - chats:read
components:
  schemas:
    ListMessagesResponse:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              chatId:
                type: string
              role:
                type: string
                enum:
                  - user
                  - assistant
                  - system
                  - tool
              status:
                type: string
                enum:
                  - streaming
                  - complete
                  - failed
                  - cancelled
              content:
                type: array
                items:
                  oneOf:
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - text
                        text:
                          type: string
                      required:
                        - type
                        - text
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - thinking
                        text:
                          type: string
                      required:
                        - type
                        - text
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - tool_use
                        id:
                          type: string
                        name:
                          type: string
                        input:
                          type: object
                          additionalProperties: {}
                      required:
                        - type
                        - id
                        - name
                        - input
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - tool_result
                        toolUseId:
                          type: string
                        output: {}
                        isError:
                          type: boolean
                        toolInvocationId:
                          type: string
                        name:
                          type: string
                        status:
                          type: string
                          enum:
                            - DISPATCHING
                            - QUEUED
                            - RUNNING
                            - COMPLETED
                            - FAILED
                            - CANCELLED
                        durationMs:
                          type: integer
                          minimum: 0
                        creditUsed:
                          type: number
                          minimum: 0
                        resultUrls:
                          type: array
                          items:
                            type: string
                            format: uri
                        errorMessage:
                          type: string
                        errorCode:
                          type: string
                      required:
                        - type
                        - toolUseId
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - reasoning
                        text:
                          type: string
                      required:
                        - type
                        - text
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - citation
                        url:
                          type: string
                          format: uri
                        title:
                          type: string
                      required:
                        - type
                        - url
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - usage
                        promptTokens:
                          type: integer
                          minimum: 0
                        completionTokens:
                          type: integer
                          minimum: 0
                        model:
                          type: string
                        costCredits:
                          type: number
                          minimum: 0
                      required:
                        - type
                        - promptTokens
                        - completionTokens
              attachments:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    chatId:
                      type:
                        - string
                        - 'null'
                    messageId:
                      type:
                        - string
                        - 'null'
                    orderIndex:
                      type: integer
                      minimum: 0
                    status:
                      type: string
                      enum:
                        - PENDING
                        - READY
                        - FAILED
                        - CANCELLED
                    mimeType:
                      type:
                        - string
                        - 'null'
                    byteSize:
                      type:
                        - integer
                        - 'null'
                      minimum: 0
                    fileName:
                      type:
                        - string
                        - 'null'
                    resultUrl:
                      type:
                        - string
                        - 'null'
                      format: uri
                    errorCode:
                      type:
                        - string
                        - 'null'
                    errorMessage:
                      type:
                        - string
                        - 'null'
                    createdAt:
                      type: string
                    updatedAt:
                      type: string
                    source:
                      type: string
                      enum:
                        - uploaded
                        - generated
                  required:
                    - id
                    - chatId
                    - messageId
                    - orderIndex
                    - status
                    - mimeType
                    - byteSize
                    - fileName
                    - resultUrl
                    - errorCode
                    - errorMessage
                    - createdAt
                    - updatedAt
                    - source
              createdAt:
                type: string
            required:
              - id
              - chatId
              - role
              - status
              - content
              - attachments
              - createdAt
        nextCursor:
          type:
            - string
            - 'null'
      required:
        - items
        - nextCursor
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            details: {}
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        Clerk-native API key, `Authorization: Bearer <key>`. Minted at
        https://www.vyomflow.co.in/settings/api-keys, scoped per operation. 401
        = missing/invalid/revoked key; 403 = valid key missing the required
        scope.

````