---
title: "Get chat messages for a specific chat."
method: GET
path: "/api/v0/accounts/{account_id}/chats/{chat_id}/messages"
tags: ["messages"]
---

# Get chat messages for a specific chat.

`GET /api/v0/accounts/{account_id}/chats/{chat_id}/messages`

## Request

- Base URL: `https://omapi.onlymonster.ai`
- URL: `https://omapi.onlymonster.ai/api/v0/accounts/{account_id}/chats/{chat_id}/messages`
- Auth: API key in header `x-om-auth-token`

**Rate limit:** 1 request per second

**Marks the chat as read.** Fetching messages through this endpoint marks the chat as read on OnlyFans,
the same as opening it there: its unread messages disappear from the creator's unread list.
To watch incoming messages without marking them as read, subscribe to the `chat.message` webhook.

**Required permission:** `onlyfans.messages`

## Path parameters

- `account_id` string, required
- `chat_id` string, required

## Query parameters

- `limit` integer
- `message_id` integer
- `order` union
  - 'asc'
  - 'desc'

## Response `200`

Default Response

- object
  - `items` object[], required
    - `id` integer, required
    - `text` string, required
    - `from_user` integer, required
    - `is_sent_by_me` boolean, required: true = sent by account owner (creator), false = sent by fan
    - `created_at` string, required
    - `media` object[], required
      - `id` integer, required
      - `type` string, required
      - `can_view` boolean, required
      - `is_ready` boolean, required
      - `has_error` boolean, required
      - `converted_to_video` boolean, required
      - `created_at` string, required
      - `thumbnail_url` string, required
    - `media_count` integer, required
    - `is_opened` boolean, required: read/unread: false = unread
    - `is_new` boolean, required
    - `price` number, required
    - `is_free` boolean, required
    - `can_purchase` boolean, required
    - `can_purchase_reason` string, required
    - `sender` object, required: Who sent the message on the creator side. Best-effort, resolved for recent messages only; both keys are always present and both are `null` when unknown.
      - `type` union, required: Sender kind: - `chatter` — a team member sending manually - `am` — auto-message campaign - `pmm` — PMM campaign - `scheduled` — follow-up message - `mimic` — Mimic - `api` — sent through the API - `mass_message` — mass message - `null` — unknown: incoming from the fan, not sent through OnlyMonster, or not resolved
        - 'chatter'
        - 'am'
        - 'pmm'
        - 'scheduled'
        - 'mimic'
        - 'api'
        - 'mass_message'
      - `user_id` string, required: Big integer id as string
    - `created_by` object, required: Who the message was sent by on the creator side: - `user` — a team member; `id` equals `sender.user_id` - `api_key` — an API key; `id` is the identifier of the key, resolvable through `GET /api/v0/api-keys`, and `sender.user_id` is `null` - `null` — unknown
      - `type` 'user' | 'api_key', required
      - `id` string, required
  - `has_more` boolean, required: true if more messages are available beyond the returned page

## Other responses

- `403`: The API key lacks the permission this endpoint requires, or the request is outside what the organisation or the API key can access.

## Changes

- **2026-11-03** `20f58411c6c5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/onlymonster/apis/om-api-service/changes/api/v0/accounts/:account_id/chats/:chat_id/messages/get.md)

---

[API](https://skmtc.dev/onlymonster/apis/om-api-service.md) - [All operations](https://skmtc.dev/onlymonster/apis/om-api-service/llms.txt) - [OpenAPI document](https://skmtc.dev/onlymonster/apis/om-api-service/revisions/0003edb0288a?raw)
