Skip to main content
GET
Get earnings data
Required scope
  • read:insights — Access analytics, metrics, and insights data for performance tracking.

Authorizations

Authorization
string
header
required

OAuth 2.0 access token, presented as a JWT bearer token in the Authorization header. Obtain a token via the authorization-code flow; the scopes granted to the token determine which operations it may call.

Headers

X-Fanvue-API-Version
string
default:2025-06-26
required

API version to use for the request

Example:

"2025-06-26"

Query Parameters

startDate
string<date-time>

Start date as ISO 8601 datetime string with optional timezone offset (e.g., 2024-10-20T00:00:00+01:00 or 2024-10-20T00:00:00Z).

endDate
string<date-time>

End date as ISO 8601 datetime string with optional timezone offset (e.g., 2024-10-25T00:00:00+01:00 or 2024-10-25T00:00:00Z). Non-inclusive - data before this date is included.

source
enum<string>[]

Comma-separated list of earning sources

What produced this earning.

renewal is a catch-all for every recurring charge after the first payment: profile subscriptions, checkout-link subscriptions and fan-experience subscriptions all bill as renewal from their second charge onwards. So subscription, checkoutLink and fanExperience only ever hold first payments and one-off purchases. appStore is the single exception: an app's recurring charges stay appStore.

fanExperience and appStore are different sides of a third-party app: fanExperience is the creator selling a paid experience to a fan, appStore is the app's developer selling to the creator, so an appStore row is not fan-to-creator spend. referral, affiliate and giveaway are creator rewards rather than fan purchases. user follows the invoice rather than the source: it is null when the row records no fan, the common case for those three, and a giveaway granted to a specific fan returns that fan.

Reversals are surfaced here too: refund and chargeback rows carry negative gross/net, matching /insights/spending.

Available options:
all,
affiliate,
appStore,
checkoutLink,
fanExperience,
mediaLink,
message,
post,
referral,
renewal,
subscription,
tip,
giveaway,
refund,
chargeback
transactionOrderIds
string[]

Comma-separated transaction order IDs to fetch (max 100). Use to re-fetch specific transactions by ID and pick up status changes. Combines with the other filters; normal pagination still applies. Comma-separated transaction order IDs (max 100)

experienceUuid
string<uuid>

Return only earnings attributed to this fan experience. Matches every charge the experience produced, including one-off access purchases, the first subscription charge and each renewal, plus the refunds and chargebacks that reverse any of them, so a filtered total nets out correctly. Combines with the other filters; normal pagination still applies.

Use this rather than filtering on source: a renewal reports source: "renewal", so source=fanExperience under-reports recurring experience revenue from the second charge onwards.

cursor
string

Cursor for pagination - If given, pass nextCursor to get the next page.

size
number

Number of items to return per page (1-50, default: 20). When omitted on a cursor request, the size from the previous page (carried in the cursor) is reused.

Required range: 1 <= x <= 50

Response

Earnings data with cursor pagination

data
object[]
required
nextCursor
string | null
required

Cursor for next page, null if no more data