---
title: "Get top-spending fans"
method: GET
path: "/insights/top-spenders"
---

# Get top-spending fans

`GET /insights/top-spenders`

## Request

- Base URL: `https://api.fanvue.com`
- URL: `https://api.fanvue.com/insights/top-spenders`
- Auth: OAuth 2
  - Authorization code: `https://auth.fanvue.com/oauth2/auth`
  - Token URL: `https://auth.fanvue.com/oauth2/token` scopes: `read:insights`, `read:fan`

Returns a paginated list of the top-spending fans for the authenticated creator with their spending totals and message counts.

## 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.
- `page` integer: Page number to retrieve (starts from 1)
- `size` integer: Number of items to return per page (1-50, default: 15)

## Headers

- `X-Fanvue-API-Version` string, required

## Response `200`

Top spending fans with pagination

- object
  - `data` object[], required: Array of top spending fans with their spending totals and message counts
    - `gross` number, required: Total amount this fan paid, in USD cents. Gross of reversals: only positive invoices are counted, so a refunded or charged-back purchase is left in at its full amount rather than subtracted. App Store purchases are counted here as well. Both differ from `spending.total` on /insights/fans/{userUuid}, which is net of reversals and leaves App Store purchases out because they record a creator buying an app from its developer.
    - `net` number, required: Creator's total cut from this fan after Fanvue fees, in USD cents. Same reversal treatment as `gross`: fees are the only thing taken off.
    - `messages` number, required: Number of messages exchanged with this fan
    - `user` object, required: Fan's user information
      - `uuid` string, uuid, required
      - `handle` string, required
      - `displayName` string, required
      - `nickname` string, nullable, required
      - `isTopSpender` boolean, required
      - `avatarUrl` string, nullable, required
      - `registeredAt` string, date-time, required
  - `pagination` object, required: Pagination information
    - `page` number, required: Current page number
    - `size` number, required: Number of records returned in this response
    - `hasMore` boolean, required: Whether there are more items available on subsequent pages

## Other responses

- `400`: Bad Request - API version not supported OR validation failed (dates, sources, cursor, pagination)
- `401`: Unauthorized Response
- `403`: Unauthorized Response
- `410`: API version no longer supported (sunset)
- `429`: Too many requests - rate limit exceeded

---

[API](https://skmtc.dev/fanvue/apis/fanvue-api.md) - [All operations](https://skmtc.dev/fanvue/apis/fanvue-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fanvue/apis/fanvue-api/revisions/966260af2770?raw)
