Messages

List Chat Messages

Returns messages from a chat conversation. Cursor-based pagination using the last message ID. Requires permission api_messages_list.

https://public-api.fansmetric.com
GET/v1/{account_id}/chats/{user_id}/messages
Bearer

Authorization

default
AuthorizationBearer <token>

Send your FansMetric API key as a Bearer token in the Authorization header.

In: header

Path Parameters

  • account_id*integer

    OnlyFans numeric account ID.

  • user_id*integer

    Fan/user ID of the conversation.

Query Parameters

  • limitinteger

    Number of messages. Default 10. Min 1, max 100.

  • orderstring

    desc (default) or asc.

  • skip_usersstring

    all (default) or none.

  • idinteger

    Cursor — pass the last message's id from the previous page.

  • first_idinteger

    Include this message ID as the first result. Use with order=desc to jump to a specific message.

  • last_idinteger

    Include this message ID as the first result. Use with order=asc. Note: response list order is also inverted.

  • filterstring

    Currently only pinned is supported.

Response Fields

  • data.list[].responseTypestring

    Always "message".

  • data.list[].idinteger

    Message ID.

  • data.list[].textstring

    Message text (can contain HTML).

  • data.list[].giphyIdstring | null

    Attached Giphy ID, if any.

  • data.list[].lockedTextboolean

    True when text is hidden behind a paywall.

  • data.list[].isFreeboolean

    True when the message is free (price = 0).

  • data.list[].priceinteger

    PPV price. 0 if free.

  • data.list[].mediaCountinteger

    Number of media attachments.

  • data.list[].mediaarray

    Media items attached to the message.

  • data.list[].previewsarray

    Vault media IDs used as PPV previews.

  • data.list[].isTipboolean

    True if the message represents a tip.

  • data.list[].isLikedboolean

    True if the recipient has liked the message.

  • data.list[].isPinnedboolean

    True if the message is currently pinned.

  • data.list[].canBePinnedboolean

    Whether the message can be pinned.

  • data.list[].isFromQueueboolean

    True if the message was sent via the queue (e.g. mass message).

  • data.list[].fromUserobject

    Sender summary — { id, _view }.

  • data.list[].createdAtstring

    ISO 8601 timestamp of creation.

  • data.list[].changedAtstring

    ISO 8601 timestamp of last change.

  • data.list[].cancelSecondsinteger

    Seconds remaining in which the sender can still unsend.

  • data.list[].isOpenedboolean

    True if the recipient has opened the message.

  • data.list[].isNewboolean

    True if the message is unread for the recipient.

  • data.hasMoreboolean

    Whether more pages exist.

  • dataobject | array

    Endpoint-specific payload. See the fields below for this route.

  • _pagination.next_pagestring

    Relative URL for the next page, with the cursor or offset already applied. Append it to the API base URL and send it as-is. Omitted entirely on the last page.

  • _meta._credits.usedinteger

    Credits consumed by this request (currently always 1).

  • _meta._rate_limits.limit_minuteinteger

    Maximum requests per minute for the organization.

  • _meta._rate_limits.remaining_minuteinteger

    Remaining requests in the current minute window.

  • _meta._rate_limits.limit_dayinteger

    Maximum requests per day for the organization.

  • _meta._rate_limits.remaining_dayinteger

    Remaining requests in the current day window.

curl --request GET "https://public-api.fansmetric.com/v1/100000001/chats/sample_user_id/messages?limit=20&order=desc&skip_users=sample_skip_users" \
  --header "Authorization: Bearer YOUR_API_KEY"

Response

200
{
"data":{
"list":[
0:{
"responseType":"message"
"id":1000000000001
"text":"<p>Hello!</p>"
"giphyId":null
"lockedText":false
"isFree":true
"price":0
"mediaCount":0
"media":[]
"previews":[]
"isTip":false
"isLiked":false
"isPinned":false
"canBePinned":true
"isFromQueue":false
"fromUser":{
"id":100000001
"_view":"t"
}
"createdAt":"2026-05-15T10:00:00+00:00"
"changedAt":"2026-05-15T10:00:00+00:00"
"cancelSeconds":0
"isOpened":false
"isNew":false
}
]
"hasMore":true
}
"_pagination":{
"next_page":"/v1/10000001/chats/100000002/messages?limit=10&order=desc&skip_users=all&id=1000000000001"
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":994
"limit_day":50000
"remaining_day":49994
}
}
}