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

# Get top-spending fans

`GET /insights/top-spenders`

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/431868e8a264?raw)
