curl --request GET \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/insights/subscribers \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/insights/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/creators/{creatorUserUuid}/insights/subscribers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"date": "2024-01-15T00:00:00.000Z",
"total": 56,
"newSubscribersCount": 45,
"cancelledSubscribersCount": 12
},
{
"date": "2024-01-14T00:00:00.000Z",
"total": 23,
"newSubscribersCount": 38,
"cancelledSubscribersCount": 15
}
],
"nextCursor": "eyJkYXRlIjoiMjAyNC0wMS0xNVQwMDowMDowMC4wMDBaIn0"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Get subscriber events over time for a creator
Returns cursor-paginated subscriber event data for the specified creator over a specified time period.
This endpoint is an analytics time series, not a real-time audience snapshot:
newSubscribersCount= number of new subscription starts in the period bucketcancelledSubscribersCount= number of subscription chain ends in the period buckettotal= cumulative net change from the beginning of the requested range (new - cancelled)
If you need a current audience count/list (for messaging or contact list UX), use Smart Lists endpoints (/{creatorUserUuid}/chats/lists/smart and /{creatorUserUuid}/chats/lists/smart/{uuid}) instead of this endpoint.
newSubscribersCount counts subscription starts, not distinct people: a returning fan who starts a new subscription is counted again. It also includes free trials, starts later refunded or charged back, fans who were later banned or deleted, and it spans profile subscriptions, checkout-link subscriptions and fan-experience subscriptions. Because of this it is normally higher than the “New” figure on the creator’s in-app Insights dashboard, which counts first-ever profile subscribers only. Use this endpoint as the canonical daily acquisition figure.
startDate/endDate offsets are honoured when selecting the window, but events are always bucketed into UTC calendar days — date is always UTC midnight. There is no timezone parameter on this endpoint, so a creator working in a non-UTC timezone should expect their local-day totals to differ from these buckets.
curl --request GET \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/insights/subscribers \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/insights/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/creators/{creatorUserUuid}/insights/subscribers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"date": "2024-01-15T00:00:00.000Z",
"total": 56,
"newSubscribersCount": 45,
"cancelledSubscribersCount": 12
},
{
"date": "2024-01-14T00:00:00.000Z",
"total": 23,
"newSubscribersCount": 38,
"cancelledSubscribersCount": 15
}
],
"nextCursor": "eyJkYXRlIjoiMjAyNC0wMS0xNVQwMDowMDowMC4wMDBaIn0"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}read:creator— Access creator profiles, content, and creator-specific information.read:insights— Access analytics, metrics, and insights data for performance tracking.
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"
Path Parameters
Query Parameters
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). Inclusive. The offset is honoured when selecting the window (the time component is not ignored), but events are always bucketed into UTC calendar days.
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. The offset is honoured when selecting the window (the time component is not ignored), but events are always bucketed into UTC calendar days.
Cursor for pagination - If given, pass nextCursor to get the next page.
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.
1 <= x <= 50Was this page helpful?