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

# Get message query changes

> Returns filtered message-list index changes since a prior message query state, or the current message query state when omitted.



## OpenAPI

````yaml /openapi-app.json get /mailbox/messages/query-changes
openapi: 3.1.0
info:
  description: Programmatic access to your Sendmux email infrastructure.
  title: Sendmux API
  version: 1.0.0
servers:
  - description: API v1
    url: https://app.sendmux.ai/api/v1
security:
  - bearerAuth: []
paths:
  /mailbox/messages/query-changes:
    get:
      tags:
        - Mailbox API
      summary: Get message query changes
      description: >-
        Returns filtered message-list index changes since a prior message query
        state, or the current message query state when omitted.
      operationId: mailboxQueryMessageChanges
      parameters:
        - in: query
          name: since_query_state
          required: false
          schema:
            type: string
        - in: query
          name: limit
          required: false
          schema:
            maximum: 500
            minimum: 1
            type: integer
        - in: query
          name: up_to_id
          required: false
          schema:
            type: string
        - in: query
          name: calculate_total
          required: false
          schema:
            type: boolean
        - in: query
          name: folder_id
          required: false
          schema:
            description: Filter to messages in this folder ID.
            type: string
        - in: query
          name: q
          required: false
          schema:
            description: Full-text search query across message fields.
            type: string
        - in: query
          name: from
          required: false
          schema:
            description: Filter by sender email address or display name.
            type: string
        - in: query
          name: to
          required: false
          schema:
            description: Filter by To recipient email address or display name.
            type: string
        - in: query
          name: cc
          required: false
          schema:
            description: Filter by CC recipient email address or display name.
            type: string
        - in: query
          name: bcc
          required: false
          schema:
            description: Filter by BCC recipient email address or display name.
            type: string
        - in: query
          name: subject
          required: false
          schema:
            description: Filter by subject text.
            type: string
        - in: query
          name: body
          required: false
          schema:
            description: Filter by message body text.
            type: string
        - in: query
          name: header_name
          required: false
          schema:
            description: Header name to match with `header_value`.
            type: string
        - in: query
          name: header_value
          required: false
          schema:
            description: Header value to match with `header_name`.
            type: string
        - in: query
          name: min_size_bytes
          required: false
          schema:
            description: Minimum message size in bytes.
            minimum: 0
            type: integer
        - in: query
          name: max_size_bytes
          required: false
          schema:
            description: Maximum message size in bytes.
            minimum: 0
            type: integer
        - in: query
          name: keyword
          required: false
          schema:
            description: Require this message keyword, such as `$seen`.
            type: string
        - in: query
          name: not_keyword
          required: false
          schema:
            description: Exclude messages with this keyword.
            type: string
        - in: query
          name: after
          required: false
          schema:
            description: Filter to messages after this ISO 8601 timestamp.
            type: string
        - in: query
          name: before
          required: false
          schema:
            description: Filter to messages before this ISO 8601 timestamp.
            type: string
        - in: query
          name: has_attachment
          required: false
          schema:
            description: When true, only return messages with attachments.
            type: boolean
        - in: query
          name: is_unread
          required: false
          schema:
            description: When true, only return unread messages.
            type: boolean
        - in: query
          name: sort_by
          required: false
          schema:
            enum:
              - received_at
              - sent_at
              - subject
              - from
              - to
              - size_bytes
            type: string
        - in: query
          name: sort_direction
          required: false
          schema:
            enum:
              - asc
              - desc
            type: string
        - description: >-
            Mailbox public ID to target when the credential grants access to
            more than one mailbox. Omit when the credential is scoped to exactly
            one mailbox.
          in: query
          name: mailbox_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MailboxMessageQueryChangesResponse'
          description: Message query changes
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Invalid query sync state or filter
      security:
        - bearerAuth: []
components:
  schemas:
    MailboxMessageQueryChangesResponse:
      allOf:
        - $ref: '#/components/schemas/SuccessEnvelope'
        - properties:
            data:
              $ref: '#/components/schemas/MailboxMessageQueryChanges'
            meta:
              $ref: '#/components/schemas/ResponseMeta'
          required:
            - data
          type: object
      unevaluatedProperties: false
    ApiError:
      additionalProperties: false
      properties:
        error:
          additionalProperties: false
          properties:
            code:
              description: Machine-readable error code
              enum:
                - invalid_parameter
                - missing_parameter
                - authentication_required
                - insufficient_permissions
                - not_found
                - conflict
                - limit_exceeded
                - idempotency_conflict
                - payload_too_large
                - validation_error
                - rate_limit_exceeded
                - service_unavailable
                - internal_error
              example: invalid_parameter
              type: string
            doc_url:
              description: Link to relevant documentation
              type: string
            errors:
              description: >-
                Accumulated per-field issues for validation errors. Only present
                on 400/422 responses.
              items:
                $ref: '#/components/schemas/ApiErrorDetail'
              type: array
            message:
              description: Human-readable error description
              type: string
            param:
              description: The parameter that caused the error
              type: string
            retryable:
              description: >-
                Whether the caller may safely retry this request. 4xx are
                typically false (except 429); 5xx are typically true.
              example: false
              type: boolean
          required:
            - code
            - message
            - retryable
          type: object
        meta:
          additionalProperties: false
          properties:
            request_id:
              example: req_clxxxxxxxxxxxxxxxxxxxxxxxxx
              type: string
          required:
            - request_id
          type: object
        ok:
          enum:
            - false
          type: boolean
      required:
        - ok
        - error
        - meta
      type: object
    SuccessEnvelope:
      properties:
        meta:
          additionalProperties: {}
          properties: {}
          type: object
        ok:
          enum:
            - true
          type: boolean
      required:
        - ok
        - meta
      type: object
    MailboxMessageQueryChanges:
      additionalProperties: false
      properties:
        added:
          items:
            additionalProperties: false
            properties:
              id:
                type: string
              index:
                type: integer
            required:
              - id
              - index
            type: object
          type: array
        has_more:
          type: boolean
        new_query_state:
          type: string
        old_query_state:
          type:
            - string
            - 'null'
        removed:
          items:
            type: string
          type: array
        total:
          type:
            - integer
            - 'null'
      required:
        - old_query_state
        - new_query_state
        - has_more
        - removed
        - added
        - total
      type: object
    ResponseMeta:
      additionalProperties: false
      properties:
        request_id:
          example: req_clxxxxxxxxxxxxxxxxxxxxxxxxx
          type: string
      required:
        - request_id
      type: object
    ApiErrorDetail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Machine-readable issue code from the validator (e.g. zod issue
            code).
          example: invalid_string
          type: string
        field:
          description: Dot-path of the offending request field.
          example: recipient.email
          type: string
        message:
          description: Human-readable issue description.
          type: string
      required:
        - field
        - code
        - message
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: API Key
      description: >-
        Sendmux API key. Use a root API key for Management API routes, or a
        mailbox credential for Mailbox API routes. Obtain keys from the
        dashboard under API Keys.
      scheme: bearer
      type: http

````