Chat Messages

List Chat Messages

Changed on

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. For messages sent by the connected account, seenByFan is true if the fan has seen the message and false otherwise. It is null for messages sent by the fan or when read status is unavailable.

get/api/{account}/chats/{chat_id}/messages

Request

  • Base URL
    https://app.onlyfansapi.com
  • URL
    https://app.onlyfansapi.com/api/{account}/chats/{chat_id}/messages
  • Auth
    HTTP bearer

Query parameters

limitstring

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

filter'pinned'

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

Example:pinned
first_idstring nullable

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_idstring nullable

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).

orderstring

Sort order for messages (desc or asc)

Example:desc
skip_usersstring

Whether to skip user details (all or none).

Example:all

Response

Success

Example response

{
  "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,
      "seenByFan": false
    },
    {
      "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,
      "seenByFan": null
    }
  ],
  "_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
    }
  }
}

Changes

    • info

      added the required property // to the response with the status

    • breaking

      the response property // became nullable for the status

    • warning

      deleted the query request parameter id

    • info

      api operation id listChatMessage removed and replaced with listChatMessages

    • info

      api tag Chat Messages added

    • info

      api tag Chats removed

    • info

      added the new optional query request parameter filter

    • info

      added the new optional query request parameter first_id

    • info

      added the new optional query request parameter last_id

    • info

      added the new optional query request parameter limit