Get Earnings Summary
Get the creator's earnings pre-aggregated into all-time and this-month totals, a month-over-month comparison, source and type breakdowns, a chart series and averages by weekday and hour, so a dashboard does not have to sum transactions itself. Proxies Fanvue's GET /v1/insights/earnings/summary.
Money is in USD cents, paired as gross (pre-fee) and net (the creator's cut). Refunds and chargebacks are left out of both rather than subtracted, so these figures do not reconcile against List Earnings, which carries the reversals. averageByDayOfWeek (1 = Monday) and averageByHourOfDay are gross-only.
Referral, affiliate and giveaway earnings are creator rewards no fan paid for, and they land in breakdownBySource.referrals and breakdownBySource.other.
Fanvue caches this response for up to 10 minutes per creator and parameter set, so a figure can lag a payment that has already settled.
Authorization
default Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys
In: header
Path Parameters
The Fanvue Account ID
Query Parameters
Only include earnings on or after this ISO 8601 datetime.
Only include earnings before this ISO 8601 datetime (non-inclusive).
Bucket size for the overTime series: day or week. Default = day
IANA timezone used for period grouping and month boundaries. Default = UTC
Response Body
application/json
curl -X GET "https://app.onlyfansapi.com/api/fanvue/fanvue_acct_XXXXXXXXXXXXXXX/insights/earnings/summary?startDate=2026-03-01T00%3A00%3A00Z&endDate=2026-04-01T00%3A00%3A00Z&granularity=day&timezone=Europe%2FLondon"{
"data": {
"totals": {
"allTime": {
"gross": 399,
"net": 339
},
"thisMonth": {
"gross": 399,
"net": 339,
"previousMonthGross": 0,
"previousMonthNet": 0,
"grossChangePercentage": null,
"netChangePercentage": null
}
},
"breakdownBySource": {
"subs": {
"gross": 399,
"net": 339
},
"messages": {
"gross": 0,
"net": 0
},
"posts": {
"gross": 0,
"net": 0
},
"tips": {
"gross": 0,
"net": 0
},
"referrals": {
"gross": 0,
"net": 0
},
"renewals": {
"gross": 0,
"net": 0
},
"other": {
"gross": 0,
"net": 0
}
},
"earningsByType": {
"renewals": {
"gross": 0,
"net": 0
},
"messages": {
"gross": 0,
"net": 0
},
"tips": {
"gross": 0,
"net": 0
},
"subs": {
"gross": 399,
"net": 339
}
},
"overTime": [
{
"periodStart": "2026-09-22T00:00:00.000Z",
"gross": 399,
"net": 339
}
],
"averageByDayOfWeek": {
"1": 0,
"2": 399,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0
},
"averageByHourOfDay": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
399,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"period": {
"startDate": "2026-09-01T00:00:00.000Z",
"endDate": "2026-10-01T00:00:00.000Z",
"granularity": "day",
"timezone": "UTC"
}
},
"_meta": {
"_credits": {
"used": 1,
"balance": 10055811,
"note": "Always"
},
"_cache": {
"is_cached": false,
"note": "Cache disabled for this endpoint"
},
"_rate_limits": {
"limit_minute": 5000,
"limit_day": null,
"remaining_minute": 4999,
"remaining_day": null,
"notice": "We have decided to remove our daily rate limits. Please remove any references to these in your integrations."
}
}
}