OnlyFans API
OnlyFansChat Messages

List Chat Messages

Get messages from a specific chat. Use filter=pinned or List Pinned Chat Messages to retrieve only pinned messages. Follow _pagination.next_page until it is null; a short page can still have more results.

GET
/api/{account}/chats/{chat_id}/messages
AuthorizationBearer <token>

Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys

In: header

Path Parameters

account*string

The Account ID

chat_id*string

The ID of the chat (usually a fan's OnlyFans User ID)

Query Parameters

limit?string

The number of messages to return (default = 10, max = 100)

filter?string

Filter by certain messages. Currently, only pins are filterable.

Value in"pinned"
first_id?string|null

Use for pagination when order=desc (newest to oldest). Pass the last message ID from the previous page to retrieve older messages, excluding that cursor message.

last_id?string|null

Use for pagination when order=asc (oldest to newest). Include this message ID as the first message in the results. WARNING! The response list of messages will also be inverted (oldest messages will be first, opposite to default where order=desc).

order?string

Sort order for messages (desc or asc)

skip_users?string

Whether to skip user details (all or none).

Response Body

application/json

curl -X GET "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/chats/123/messages?limit=10&filter=pinned&first_id=123&last_id=123&order=desc&skip_users=all"
{
  "data": [
    {
      "responseType": "message",
      "text": "<p>yes lets do it</p>",
      "giphyId": null,
      "lockedText": false,
      "isFree": true,
      "price": 0,
      "isMediaReady": true,
      "mediaCount": 0,
      "media": [],
      "previews": [],
      "isTip": false,
      "isReportedByMe": false,
      "isCouplePeopleMedia": false,
      "queueId": 12345678901,
      "isMarkdownDisabled": true,
      "releaseForms": [],
      "fromUser": {
        "id": 987654321,
        "_view": "s"
      },
      "isFromQueue": false,
      "id": 1234567890123,
      "isOpened": false,
      "isNew": true,
      "createdAt": "2025-09-02T21:02:18+00:00",
      "changedAt": "2025-09-02T21:02:18+00:00",
      "cancelSeconds": 86396,
      "isLiked": false,
      "canPurchase": false,
      "canPurchaseReason": "free",
      "canReport": false,
      "canBePinned": true,
      "isPinned": false,
      "isSentByMe": true
    },
    {
      "responseType": "message",
      "text": "<p>Are you ready for video call now ? </p>",
      "giphyId": null,
      "lockedText": false,
      "isFree": true,
      "price": 0,
      "isMediaReady": true,
      "mediaCount": 1,
      "media": [
        {
          "id": 9876543210,
          "type": "video",
          "convertedToVideo": false,
          "canView": true,
          "hasError": false,
          "createdAt": null,
          "isReady": true,
          "files": {
            "full": {
              "url": null,
              "width": 480,
              "height": 848,
              "size": 0,
              "sources": []
            },
            "thumb": {
              "url": "https://cdn2.onlyfans.com/files/ANONYMIZED_PATH/300x300_ANONYMIZED_FILENAME.jpg?Tag=2&u=987654321&Policy=ANONYMIZED_POLICY&Signature=ANONYMIZED_SIGNATURE&Key-Pair-Id=ANONYMIZED_KEY_PAIR_ID",
              "width": 300,
              "height": 300,
              "size": 0
            },
            "preview": {
              "url": "https://cdn2.onlyfans.com/files/ANONYMIZED_PATH/480x848_ANONYMIZED_FILENAME.jpg?Tag=2&u=987654321&Policy=ANONYMIZED_POLICY&Signature=ANONYMIZED_SIGNATURE&Key-Pair-Id=ANONYMIZED_KEY_PAIR_ID",
              "width": 480,
              "height": 848,
              "size": 0
            },
            "squarePreview": {
              "url": "https://cdn2.onlyfans.com/files/ANONYMIZED_PATH/960x960_ANONYMIZED_FILENAME.jpg?Tag=2&u=987654321&Policy=ANONYMIZED_POLICY&Signature=ANONYMIZED_SIGNATURE&Key-Pair-Id=ANONYMIZED_KEY_PAIR_ID",
              "width": 960,
              "height": 960,
              "size": 0
            },
            "drm": {
              "manifest": {
                "hls": "https://cdn3.onlyfans.com/hls/files/ANONYMIZED_PATH/ANONYMIZED_FILENAME.m3u8",
                "dash": "https://cdn3.onlyfans.com/dash/files/ANONYMIZED_PATH/ANONYMIZED_FILENAME.mpd"
              },
              "signature": {
                "hls": {
                  "CloudFront-Policy": "ANONYMIZED_CLOUDFRONT_POLICY",
                  "CloudFront-Signature": "ANONYMIZED_CLOUDFRONT_SIGNATURE",
                  "CloudFront-Key-Pair-Id": "ANONYMIZED_CLOUDFRONT_KEY_PAIR_ID"
                },
                "dash": {
                  "CloudFront-Policy": "ANONYMIZED_CLOUDFRONT_POLICY",
                  "CloudFront-Signature": "ANONYMIZED_CLOUDFRONT_SIGNATURE",
                  "CloudFront-Key-Pair-Id": "ANONYMIZED_CLOUDFRONT_KEY_PAIR_ID"
                }
              }
            }
          },
          "duration": 9,
          "hasCustomPreview": false,
          "videoSources": {
            "240": null,
            "720": null
          }
        }
      ],
      "previews": [],
      "isTip": false,
      "isReportedByMe": false,
      "isCouplePeopleMedia": false,
      "queueId": 12345678902,
      "isMarkdownDisabled": true,
      "fromUser": {
        "id": 123456789,
        "_view": "s"
      },
      "isFromQueue": true,
      "canUnsendQueue": true,
      "unsendSecondsQueue": 1000000,
      "id": 1234567890124,
      "isOpened": false,
      "isNew": false,
      "createdAt": "2025-09-02T20:35:13+00:00",
      "changedAt": "2025-09-02T20:35:13+00:00",
      "cancelSeconds": 85047,
      "isLiked": false,
      "canPurchase": false,
      "canPurchaseReason": "free",
      "canReport": true,
      "canBePinned": true,
      "isPinned": false,
      "isSentByMe": false
    }
  ],
  "_pagination": {
    "next_page": "https://app.onlyfansapi.com/api/acct_ANONYMIZED_ACCOUNT_ID/chats/987654321/messages?order=desc&skip_users=all&id=1234567890125"
  },
  "_meta": {
    "_credits": {
      "used": 1,
      "balance": 224891,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 1000,
      "limit_day": 50000,
      "remaining_minute": 999,
      "remaining_day": 49984
    }
  }
}