curl --request GET \
--url https://api.fanvue.com/v1/subscribers \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/subscribers"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/subscribers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"handle": "sarah-jones",
"nickname": "SarahK",
"displayName": "Sarah Jones",
"isTopSpender": true,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z",
"role": "creator",
"subscription": {
"status": "active",
"price": 999,
"amountPaid": 999,
"currentPeriodStart": "2026-05-15T00:00:00.000Z",
"currentPeriodEnd": "2026-06-15T00:00:00.000Z",
"autoRenewalEnabled": true
},
"firstSubscribedAt": "2025-11-15T00:00:00.000Z"
},
{
"uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"handle": "mike-smith",
"nickname": null,
"displayName": "Mike Smithly",
"isTopSpender": false,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z",
"role": "creator",
"subscription": {
"status": "cancelled",
"price": 1499,
"amountPaid": 1499,
"currentPeriodStart": "2026-06-01T00:00:00.000Z",
"currentPeriodEnd": "2026-07-01T00:00:00.000Z",
"autoRenewalEnabled": false
},
"firstSubscribedAt": "2026-06-01T00:00:00.000Z"
}
],
"nextCursor": "k0FQ1m9yZXN0aWdpb3VzLW9wYXF1ZS1jdXJzb3I"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Get subscribers (cursor-paginated)
Returns the users who have subscriptions to the authenticated user.
v1-experimental Breaking Change: Switched from offset-based pagination (page/size) to keyset cursor pagination for both sort modes. Page with the opaque nextCursor; keyset pagination stays stable under concurrent subscriptions, unlike the offset-paginated v0 endpoint.
Polling for real-time updates? Use a webhook instead.
If you are calling this endpoint on a schedule to detect new activity, subscribe to the creator.subscription.activated, creator.subscription.cancel_at_period_end_changed, creator.subscription.deactivated webhook events instead — you’ll get pushed updates in real time without polling. See the webhook documentation.
curl --request GET \
--url https://api.fanvue.com/v1/subscribers \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/subscribers"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/subscribers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"handle": "sarah-jones",
"nickname": "SarahK",
"displayName": "Sarah Jones",
"isTopSpender": true,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z",
"role": "creator",
"subscription": {
"status": "active",
"price": 999,
"amountPaid": 999,
"currentPeriodStart": "2026-05-15T00:00:00.000Z",
"currentPeriodEnd": "2026-06-15T00:00:00.000Z",
"autoRenewalEnabled": true
},
"firstSubscribedAt": "2025-11-15T00:00:00.000Z"
},
{
"uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"handle": "mike-smith",
"nickname": null,
"displayName": "Mike Smithly",
"isTopSpender": false,
"avatarUrl": "https://media.fanvue.com/avatars/example-avatar.jpg",
"registeredAt": "2024-01-10T12:00:00.000Z",
"role": "creator",
"subscription": {
"status": "cancelled",
"price": 1499,
"amountPaid": 1499,
"currentPeriodStart": "2026-06-01T00:00:00.000Z",
"currentPeriodEnd": "2026-07-01T00:00:00.000Z",
"autoRenewalEnabled": false
},
"firstSubscribedAt": "2026-06-01T00:00:00.000Z"
}
],
"nextCursor": "k0FQ1m9yZXN0aWdpb3VzLW9wYXF1ZS1jdXJzb3I"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}read:fan— Access fan-related data and information within the platform.
Authorizations
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
API version to use for the request
"2025-06-26"
Query Parameters
Public field to sort by (default: subscribedAt)
name, subscribedAt Sort direction (default: desc for subscribedAt, asc for name)
asc, desc Only include users whose subscription started on or after this ISO 8601 datetime (e.g., 2024-10-20T00:00:00Z).
Only include users whose subscription started before this ISO 8601 datetime (non-inclusive).
Opaque pagination cursor from a previous response's nextCursor. It carries the sortField, sortDirection and date range the first page was cut under, so later pages need nothing but the cursor. Resending those filters is allowed while they match it; a value that contradicts the cursor is rejected.
Number of items to return (1-50, default: 15)
1 <= x <= 50Was this page helpful?