OnlyFans API
FanvueInsights

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.

GET
/api/fanvue/{fanvueAccount}/insights/earnings/summary
AuthorizationBearer <token>

Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys

In: header

Path Parameters

fanvueAccount*string

The Fanvue Account ID

Query Parameters

startDate?string

Only include earnings on or after this ISO 8601 datetime.

endDate?string

Only include earnings before this ISO 8601 datetime (non-inclusive).

granularity?string

Bucket size for the overTime series: day or week. Default = day

timezone?string

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."
    }
  }
}