Direct Messages

Direct Message Statistics

Returns per-direct-message (1:1) delivery and engagement stats — same per-message shape as the mass-message stats endpoint, but scoped to direct messages instead of mass blasts. Requires permission api_direct_messages_stats.

https://public-api.fansmetric.com
GET/v1/{account_id}/direct-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.

Query Parameters

  • limitinteger

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

  • start_datestring

    Earliest message date (UTC). Default 2 years ago. Format YYYY-MM-DD HH:MM:SS; a bare ISO 8601 timestamp is also accepted, but a trailing UTC offset such as +00:00 is not — strip it. Hold this value fixed while paginating.

  • end_datestring

    Latest message date (UTC), exclusive. Default end of today. Doubles as the cursor for default (non-search) pagination — prefer following _pagination.next_page over setting it by hand. Format YYYY-MM-DD HH:MM:SS.

  • querystring

    Text search across message bodies. When set, switches pagination to offset-based.

  • offsetinteger

    Pagination offset. Only used when query is set; ignored otherwise.

Response Fields

  • data.items[]array

    Per-DM stat rows (id, date, text, mediaCount, media, sentCount, viewedCount, isFree, isTip, template, ...). Shape is determined by upstream OnlyFans and proxied as-is.

  • data.hasMoreboolean

    Whether more pages are available.

  • 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/direct-messages?limit=20&start_date=2026-01-01%2000%3A00%3A00&end_date=2026-01-31%2023%3A59%3A59" \
  --header "Authorization: Bearer YOUR_API_KEY"

Response

200
{
"data":{
"hasMore":true
"items":[
0:{
"id":100000004
"date":"2026-05-14T18:05:07+00:00"
"text":"thanks for the tip!"
"sentCount":1
"viewedCount":1
"mediaCount":0
"isFree":true
"isTip":false
}
]
}
"_pagination":{
"next_page":"/v1/100000001/direct-messages?limit=10&end_date=2026-05-14+18%3A05%3A07"
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":999
"limit_day":50000
"remaining_day":49999
}
}
}