Chatters

Chatter Report

Returns a paginated per-chatter aggregate table across the window, plus an aggregate totals row that spans every chatter (not just the current page). Companion to Compare Chatters — same data, tabular shape instead of time-series. Requires permission api_chat_chatters_report.

https://public-api.fansmetric.com
POST/v1/chatters/report
Bearer

Authorization

default
AuthorizationBearer <token>

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

In: header

Request Body

application/json
  • account_ids*array

    Array of OnlyFans numeric account IDs (as strings). At least one. Every ID must belong to your org.

  • fromstring

    Window start (UTC). Default 30 days ago.

  • tostring

    Window end (UTC). Default now. Must be after from.

  • team_idsarray

    Array of team UUIDs. Restricts the report to users in any of these teams.

  • limitinteger

    Page size. Default 100, max 500.

  • offsetinteger

    Rows to skip. Default 0.

  • compare_to_previousstring

    true (default) to include *_prev fields on each row for the same-length window immediately before from. Set false for a faster response.

  • skip_revenue_statsstring

    true to return only hours_worked and messages_sent per row — no revenue, PPV, tips, or previous-window compare. Use for fast roster listings. Default false.

curl --request POST "https://public-api.fansmetric.com/v1/chatters/report" \
  --header "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "from": "2026-07-11T00:00:00Z",
  "to":   "2026-08-10T23:59:59Z",
  "account_ids": ["100000001", "100000002"],
  "limit":  100,
  "offset": 0,
  "compare_to_previous": true
}'

Response

200
{
"data":{
"chatters":[
0:{
"id":"b7a9e0f1-2fa4-4d0b-9c2a-6c4d0b41f2c7"
"email":"alex@example.com"
"name":"Alex Chen"
"roles":[
0:{
"id":"r_02"
"name":"Team Lead"
"color":"#3b82f6"
}
]
"hours_worked":168
"messages_sent":9421
"unique_messaged_fans":812
"unique_fans":744
"all_earnings":38214.72
"tips_revenue":10442.1
"tips_count":321
"ppvs_revenue":27772.62
"ppvs_count":1520
"unlocked_ppvs_count":842
"golden_ratio":16.13
"unlock_ratio":55.39
"chargebacks_total":124.5
"chargebacks_count":3
"hours_worked_prev":160
"messages_sent_prev":8801
"unique_messaged_fans_prev":780
"unique_fans_prev":701
"all_earnings_prev":35218.9
"tips_revenue_prev":9812.2
"tips_count_prev":302
"ppvs_revenue_prev":25406.7
"ppvs_count_prev":1441
"unlocked_ppvs_count_prev":790
"golden_ratio_prev":16.37
"unlock_ratio_prev":54.82
"chargebacks_total_prev":98
"chargebacks_count_prev":2
}
1:{
"id":"c5d6e7f8-9012-3456-7890-abcdef012345"
"email":"jordan@example.com"
"name":"Jordan Rivera"
"roles":[
0:{
"id":"r_01"
"name":"Chatter"
"color":"#22c55e"
}
]
"hours_worked":120
"messages_sent":6540
"unique_messaged_fans":512
"unique_fans":488
"all_earnings":21445.1
"tips_revenue":5210.3
"tips_count":184
"ppvs_revenue":16234.8
"ppvs_count":980
"unlocked_ppvs_count":541
"golden_ratio":14.98
"unlock_ratio":55.2
"chargebacks_total":0
"chargebacks_count":0
}
]
"aggregate":{
"hours_worked":288
"messages_sent":15961
"unique_messaged_fans":1324
"unique_fans":1232
"all_earnings":59659.82
"tips_revenue":15652.4
"tips_count":505
"ppvs_revenue":44007.42
"ppvs_count":2500
"unlocked_ppvs_count":1383
"golden_ratio":15.66
"unlock_ratio":55.32
"chargebacks_total":124.5
"chargebacks_count":3
}
"total":47
"limit":100
"offset":0
"from":"2026-07-11T00:00:00Z"
"to":"2026-08-10T23:59:59Z"
}
"_pagination":{
"next_page":null
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":999
"limit_day":50000
"remaining_day":49999
}
}
}