Chats
List Chat Media
Returns messages containing media (photos/videos/audios) exchanged in a 1:1 chat — the per-fan shared-media gallery shown under a fan's profile "Media" tab on OnlyFans. Cursor-based pagination via last_id. Filter by media type, opened state, and purchase state. Requires permission api_chats_list_media.
https://public-api.fansmetric.comAuthorization
defaultAuthorizationBearer <token>Send your FansMetric API key as a Bearer token in the Authorization header.
In: header
Path Parameters
account_id*integerOnlyFans numeric account ID.
user_id*integerFan/user ID of the conversation.
Query Parameters
limitintegerNumber of items. Default 15. Min 1, max 50.
last_idintegerCursor — use
data.nextLastIdfrom the previous response. Omit for the first page.typestringFilter by media type. One of
photos,videos,audios(plural). Omit for all types. Routes to OnlyFans' per-type sub-path internally.openedbooleanBoolean. Set
trueto return only media the fan has already opened/viewed. Acceptstrue/falseand1/0. Defaultfalse.purchasedbooleanBoolean. Set
trueto return only purchased (PPV-unlocked) media. Usually combined withfrom_user. Acceptstrue/falseand1/0. Defaultfalse.from_userstringNumeric user ID. Scope
purchased=trueto media bought from this specific buyer (typically the same fan asuser_id).
Response Fields
data.list[]arrayMessage objects that include media.
data.list[].idintegerMessage ID.
data.list[].media[]arrayMedia attachments — see OnlyFans media object.
data.hasMorebooleanWhether more pages exist.
data.nextLastIdstringPass back as
last_idfor the next page._pagination.next_pagestringPre-built next-page URL.
dataobject | arrayEndpoint-specific payload. See the fields below for this route.
_meta._credits.usedintegerCredits consumed by this request (currently always
1)._meta._rate_limits.limit_minuteintegerMaximum requests per minute for the organization.
_meta._rate_limits.remaining_minuteintegerRemaining requests in the current minute window.
_meta._rate_limits.limit_dayintegerMaximum requests per day for the organization.
_meta._rate_limits.remaining_dayintegerRemaining requests in the current day window.
| Field | Type | Description |
|---|---|---|
| data.list[] | array | Message objects that include media. |
| data.list[].id | integer | Message ID. |
| data.list[].media[] | array | Media attachments — see OnlyFans media object. |
| data.hasMore | boolean | Whether more pages exist. |
| data.nextLastId | string | Pass back as last_id for the next page. |
| _pagination.next_page | string | Pre-built next-page URL. |
| data | object | array | Endpoint-specific payload. See the fields below for this route. |
| _meta._credits.used | integer | Credits consumed by this request (currently always 1). |
| _meta._rate_limits.limit_minute | integer | Maximum requests per minute for the organization. |
| _meta._rate_limits.remaining_minute | integer | Remaining requests in the current minute window. |
| _meta._rate_limits.limit_day | integer | Maximum requests per day for the organization. |
| _meta._rate_limits.remaining_day | integer | Remaining requests in the current day window. |
curl --request GET "https://public-api.fansmetric.com/v1/100000001/chats/sample_user_id/media?limit=20&last_id=sample_last_id&type=all" \
--header "Authorization: Bearer YOUR_API_KEY"Response
200