Earnings

Earnings Overview

Returns aggregated earnings and activity stats for a date window — top-line totals plus per-section breakdowns (posts, streams, visitors, mass messages) with chart data. The "dashboard" view; for the per-transaction feed use List All Earnings. Requires permission api_earnings_read_overview.

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

  • start_datestring

    Window start. Default 2 years ago, UTC. Format YYYY-MM-DD HH:MM:SS or ISO 8601.

  • end_datestring

    Window end. Default end of today, UTC. Same format as start_date.

  • bystring

    Narrow the response to a single section. Values: earnings (top-line only), posts, streams, visitors, messages, story, promo. Forwarded upstream as-is. by is an input vocabulary and does not always match the response key — by=messages returns the section keyed massMessages.

Response Fields

  • data.earning.totalnumber

    Net earnings to the creator across the window.

  • data.earning.grossnumber

    Gross earnings before fees/taxes.

  • data.earning.deltainteger

    Percent change vs the prior equal-length window (100 = +100%, saturates at 100).

  • data.postsobject

    Posts section. count = posts published; views = total post views; earnings = revenue attributed to posts. See Section shape.

  • data.streamsobject

    Streams section. count.total is a string duration (e.g. "4h 12m"); views is viewer count.

  • data.visitorsobject

    Profile visitors. Also carries subscriptions.new and subscriptions.renew counters.

  • data.massMessagesobject

    Mass-message activity. count = messages sent; views = opens.

  • data.<section>.hasStatisticboolean

    true if upstream has data for this section in the window. false sections still return zeroed fields for layout stability.

  • data.<section>.chartData[]array

    Chart buckets { date, count }. Bucket granularity is window-dependent — read each point's date rather than assuming a period. count units are section-defined — earnings for posts/streams/massMessages, visitor counts for visitors.

  • dataobject | array

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

  • _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/earnings/overview?start_date=2026-01-01%2000%3A00%3A00&end_date=2026-01-31%2023%3A59%3A59&by=sample_by" \
  --header "Authorization: Bearer YOUR_API_KEY"

Response

200
{
"data":{
"earning":{
"total":1340918.6
"gross":1675118.6
"delta":100
}
"posts":{
"hasStatistic":true
"count":{
"total":5354
"delta":100
}
"views":{
"total":9821330
"delta":100
}
"earnings":{
"total":244018.4
"gross":305023
"delta":100
}
"chartData":[
0:{
"date":"2025-09-01T00:00:00+00:00"
"count":12410.5
}
]
}
"streams":{
"hasStatistic":false
"count":{
"total":"0m"
"delta":0
}
"views":{
"total":0
"delta":0
}
"earnings":{
"total":0
"gross":0
"delta":0
}
"chartData":[]
}
"visitors":{
"hasStatistic":true
"count":{
"total":2581195
"delta":100
}
"visitors":{
"total":2581195
"delta":100
}
"subscriptions":{
"new":{
"total":3210
"delta":100
}
"renew":{
"total":8154
"delta":33
}
}
"chartData":[
0:{
"date":"2025-09-01T00:00:00+00:00"
"count":19922
}
]
}
"massMessages":{
"hasStatistic":true
"count":{
"total":412
"delta":100
}
"views":{
"total":198455
"delta":100
}
"earnings":{
"total":78211.45
"gross":97764.31
"delta":100
}
"chartData":[]
}
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":999
"limit_day":50000
"remaining_day":49999
}
}
}