OnlyFans API
Chats

List ChatMessage

Get messages from a specific chat.

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

accountstring

The Account ID

chat_idstring

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

Query Parameters

id?string

ID of the last message from previous page. Used for pagination

order?string

Sort order for messages (desc or asc)

skip_users?string

Whether to skip user details (all or none)

Response Body

curl -X GET "https://app.onlyfansapi.com/api/string/chats/string/messages?id=111222333&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?limit=30&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
    }
  }
}