---
title: "List messages you have sent."
method: GET
path: "/api/v1/messages"
tags: ["Messages"]
---

# List messages you have sent.

`GET /api/v1/messages`

Lists the messages your operator has sent, newest first. Required scope: `messages:read`

## Query parameters

- `recipientUserId` integer, nullable — Only return messages sent to this user.
- `readState` 'read' | 'unread' | 'any', nullable — Filter by whether the recipient has read the message.
- `after` string, nullable — Cursor from a previous response's `meta.after` to retrieve the next page.
- `perPage` integer, nullable — Maximum number of messages to return (1–100).

## Response `200`

List of messages that match the criteria

- CursorBasedResponse3
  - `data` Message[], required
    - `id` string, required — Id of the message.
    - `recipientUserId` integer — Id of the user the message was sent to.
    - `body` string, required — The message body.
    - `subject` string, nullable — Subject / title, if one was set.
    - `actionUrl` string, nullable — Deep link carried by the message, if any.
    - `channels` MessageChannels, required — The channels a message is delivered on. The in-app inbox is on by default; push, email, and SMS are opt-in. At least one channel must be enabled.
      - `webInbox` boolean — Deliver to the user's in-app inbox.
      - `mobilePush` boolean — Deliver as a mobile push notification.
      - `email` boolean — Deliver as an email.
      - `sms` boolean — Deliver as an SMS.
    - `deliveryResults` MessageDeliveryResults, required — Per-channel delivery outcome. A channel is absent until its delivery is attempted.
      - `webInbox` MessageDeliveryStatus — Delivery outcome for a single channel.
        - `status` 'queued' | 'delivered' | 'failed' | 'token_invalid' | 'rate_limited' | 'skipped', required — Delivery status.
        - `at` string, date-time, required — When this status was recorded.
      - `mobilePush` MessageDeliveryStatus — Delivery outcome for a single channel.
        - `status` 'queued' | 'delivered' | 'failed' | 'token_invalid' | 'rate_limited' | 'skipped', required — Delivery status.
        - `at` string, date-time, required — When this status was recorded.
      - `email` MessageDeliveryStatus — Delivery outcome for a single channel.
        - `status` 'queued' | 'delivered' | 'failed' | 'token_invalid' | 'rate_limited' | 'skipped', required — Delivery status.
        - `at` string, date-time, required — When this status was recorded.
      - `sms` MessageDeliveryStatus — Delivery outcome for a single channel.
        - `status` 'queued' | 'delivered' | 'failed' | 'token_invalid' | 'rate_limited' | 'skipped', required — Delivery status.
        - `at` string, date-time, required — When this status was recorded.
    - `readAt` string, date-time, nullable — When the recipient read the message, or null if unread.
    - `createdAt` string, date-time, required — When the message was created.
  - `meta` CursorBasedPageMeta, required
    - `itemCount` integer, nullable — The number of items in the result
    - `perPage` integer — The requested maximum number of items returned
    - `after` string, nullable — A cursor to retrieve the next page of items in a new request
    - `before` string, nullable — A cursor to retrieve the previous page of items in a new request

## Other responses

- `400` — The request is invalid
- `401` — Consumer with provided credentials was not found
- `403` — Operator doesn't have access to resource
- `404` — Entity with the provided id was not found

---

[API](https://skmtc.net/monta/apis/monta-partner-api.md) · [All operations](https://skmtc.net/monta/apis/monta-partner-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/monta/monta-partner-api/revisions/517e18f11015/schema)
