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

# List messages in a conversation

> Fetches paginated message history for a conversation. Without before/after, returns the latest page. Use before to load older messages and after to load newer ones.



## OpenAPI

````yaml /openapi.json get /conversations/{id}/messages
openapi: 3.1.0
info:
  title: GreenTick Developer API
  version: 1.0.0
  summary: WhatsApp messaging, contacts, workflows, and webhooks
  description: >-
    Use GreenTick's REST API to send WhatsApp messages, synchronize contacts,
    trigger workflows, and receive signed event webhooks. Each API key belongs
    to one connected phone number.
  contact:
    name: GreenTick Support
    url: https://greentick.ai
servers:
  - url: https://api.greentick.ai/v1
    description: GreenTick API v1
security: []
tags:
  - name: System
    description: Health and API metadata
  - name: Messages
    description: Send WhatsApp messages
  - name: Conversations
    description: List inbox threads and fetch message history
  - name: Templates
    description: Discover approved templates and their variables
  - name: Contacts
    description: Synchronize customer contacts
  - name: Labels
    description: Contact label catalog for the connected phone number
  - name: Attributes
    description: Contact custom attribute definitions for the connected phone number
  - name: Phone numbers
    description: WhatsApp sending line for this phone number
  - name: Automations
    description: List enrollable automations and start one for a contact
  - name: Workflow hooks
    description: Trigger GreenTick automations from external systems
  - name: Webhooks
    description: Subscribe Zapier, Make.com, or your own server to GreenTick events
  - name: API key
    description: Check the Bearer API key and account timezone
  - name: MCP platform
    description: Limits, usage, and shared connector behavior
  - name: Media
    description: Host customer-supplied files
  - name: Workflows
    description: Create, publish, and export automations
  - name: Flows
    description: WhatsApp Flows
  - name: AI bots
    description: AI bots and knowledge
  - name: Broadcasts
    description: Template broadcasts
  - name: Catalogs
    description: Commerce catalogs, products, and orders
  - name: Ads
    description: Click-to-WhatsApp ads and conversions
paths:
  /conversations/{id}/messages:
    get:
      tags:
        - Conversations
      summary: List messages in a conversation
      description: >-
        Fetches paginated message history for a conversation. Without
        before/after, returns the latest page. Use before to load older messages
        and after to load newer ones.
      operationId: listConversationMessages
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: GreenTick conversation ID.
        - name: phoneNumberRef
          in: query
          required: true
          schema:
            type: string
          description: GreenTick phone line ref from GET /phone-numbers (ref field).
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 30
        - name: before
          in: query
          schema:
            type: string
          description: >-
            Load messages older than this cursor (oldestCursor from a previous
            response).
        - name: after
          in: query
          schema:
            type: string
          description: >-
            Load messages newer than this cursor (newestCursor from a previous
            response).
      responses:
        '200':
          description: Message page
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/ConversationMessagesPage'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Conversation not found
      security:
        - apiKey: []
components:
  schemas:
    ConversationMessagesPage:
      type: object
      properties:
        conversationId:
          type: string
        messages:
          type: array
          items:
            $ref: '#/components/schemas/ConversationMessage'
        total:
          type: integer
          description: Total messages in the conversation.
          example: 128
        hasMoreBefore:
          type: boolean
        hasMoreAfter:
          type: boolean
        oldestCursor:
          type: string
          nullable: true
        newestCursor:
          type: string
          nullable: true
    ConversationMessage:
      type: object
      description: >-
        Normalized message row. Returned on POST /messages (data.message) and in
        GET /conversations/{id}/messages.
      properties:
        id:
          type: string
        wamid:
          type: string
        direction:
          type: string
          enum:
            - inbound
            - outbound
        type:
          type: string
          description: text | template | image | video | document | audio | sticker | …
        text:
          type: string
          description: Human-readable preview text.
        createdAt:
          type: string
          format: date-time
        deliveryStatus:
          type: string
          nullable: true
          enum:
            - pending
            - sent
            - delivered
            - read
            - failed
            - deleted
            - null
          description: Latest outbound delivery state.
        deliveryHistory:
          type: array
          items:
            $ref: '#/components/schemas/MessageDeliveryHistoryEntry'
        repliedBy:
          type: string
        template:
          allOf:
            - $ref: '#/components/schemas/MessageTemplatePayload'
          nullable: true
        mediaId:
          type: string
        isRevoked:
          type: boolean
    MessageDeliveryHistoryEntry:
      type: object
      description: >-
        One delivery state change on an outbound message, ordered oldest to
        newest.
      required:
        - status
        - timestamp
      properties:
        status:
          type: string
          enum:
            - pending
            - sent
            - delivered
            - read
            - failed
            - deleted
        timestamp:
          type: string
          format: date-time
        errorCode:
          type: integer
          nullable: true
          description: Meta error code when status is failed.
        errorTitle:
          type: string
          description: Short error title when status is failed.
        errorMessage:
          type: string
          description: Human-readable error detail when status is failed.
    MessageTemplatePayload:
      type: object
      description: >-
        Sent template snapshot on template messages. Not the same as the GET
        /templates catalog object.
      properties:
        name:
          type: string
          example: order_update
        language:
          type: string
          example: en_US
        templateCategory:
          type: string
          enum:
            - MARKETING
            - UTILITY
            - AUTHENTICATION
        parameterFormat:
          type: string
          const: NAMED
        components:
          type: array
          description: >-
            Approved Meta template structure (HEADER, BODY, FOOTER, BUTTONS)
            with placeholders.
          items:
            type: object
            additionalProperties: true
        variableValues:
          type: object
          additionalProperties:
            type: string
          description: Resolved named variables used when the message was sent.
          example:
            customer_name: Akshay
            order_id: ord_123
        headerComponent:
          type: object
          nullable: true
          description: >-
            Send-time header component for media headers (image/video/document
            link or id).
          additionalProperties: true
  responses:
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            type: object
            required:
              - success
              - code
              - message
            properties:
              success:
                type: boolean
                example: false
              code:
                type: string
                example: INVALID_TO
              message:
                type: string
                example: to (E.164 phone) is required
    Unauthorized:
      description: Missing, invalid, or revoked API key
      content:
        application/json:
          schema:
            type: object
            required:
              - success
              - code
              - message
            properties:
              success:
                type: boolean
                example: false
              code:
                type: string
                example: INVALID_TO
              message:
                type: string
                example: to (E.164 phone) is required
    Forbidden:
      description: >-
        Plan expired (PLAN_EXPIRED) or phone number is not this API key’s
        connected phone number
      content:
        application/json:
          schema:
            type: object
            required:
              - success
              - code
              - message
            properties:
              success:
                type: boolean
                example: false
              code:
                type: string
                example: INVALID_TO
              message:
                type: string
                example: to (E.164 phone) is required
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: gt_live_…
      description: >-
        Create an API key in GreenTick Developer settings. Send it as
        Authorization: Bearer gt_live_… (Bearer prefix required).

````

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