List Expiring Subscribers
List the subscribers whose subscription lapses inside a window and who have auto-renew switched off, so a win-back can be sent before they go. Ordered soonest to lapse first.
Fanvue has no endpoint for this and no server-side filter that answers it. The non_renewing smart list is the closest thing and is not the same question: it means auto-renew is off whenever the period ends, and its members carry no subscription dates to narrow with. So this endpoint pages GET /v1/subscribers and filters on subscription.currentPeriodEnd and subscription.autoRenewalEnabled, which is the derivation List Subscribers describes, done here instead of in your code.
This costs more than one credit. One page of 50 subscribers is one request Fanvue answers and one credit, the same rule as every other endpoint, and one call walks up to 20 pages, or fewer if Fanvue is slow and the walk passes 20 seconds. _meta._credits.used reports what a call actually cost. Because the cost is not known until the walk finishes, the balance check up front is against the worst case, so a balance under 20 is refused even when the call would have cost less.
A page can come back empty with a nextCursor set. The caps are on subscribers scanned and time spent, not on matches found, so an empty data with a cursor means "nothing matched so far, keep going" rather than "no expiring subscribers". Follow nextCursor until it is null, exactly as with the other list endpoints. Each item is a subscriber object in the same shape List Subscribers returns.
Authorization
default Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys
In: header
Path Parameters
The Fanvue Account ID
Query Parameters
Include subscriptions ending within this many days (1 - 90). Default = 7
Opaque pagination cursor from a previous response's nextCursor, to carry on scanning where the last call stopped.
Request Body
application/json
Must be at least 1. Must not be greater than 90.
Response Body
application/json
curl -X GET "https://app.onlyfansapi.com/api/fanvue/fanvue_acct_XXXXXXXXXXXXXXX/fans/expiring?withinDays=7&cursor=eyJ2IjoxfQ" \ -H "Content-Type: application/json" \ -d '{}'{
"data": {
"data": [
{
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"handle": "sarah-jones",
"displayName": "Sarah Jones",
"nickname": null,
"isTopSpender": false,
"avatarUrl": null,
"registeredAt": "2026-09-21T12:05:33.176Z",
"subscription": {
"status": "active",
"price": 399,
"amountPaid": 399,
"currentPeriodStart": "2026-08-24T10:29:07.224Z",
"currentPeriodEnd": "2026-09-24T10:28:59.873Z",
"autoRenewalEnabled": false
},
"firstSubscribedAt": "2026-07-24T10:29:07.474Z"
},
{
"uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"handle": "mike-smith",
"displayName": "Mike Smith",
"nickname": null,
"isTopSpender": false,
"avatarUrl": null,
"registeredAt": "2026-05-02T09:15:00.000Z",
"subscription": {
"status": "active",
"price": 999,
"amountPaid": 999,
"currentPeriodStart": "2026-08-27T08:11:42.005Z",
"currentPeriodEnd": "2026-09-27T08:11:42.005Z",
"autoRenewalEnabled": false
},
"firstSubscribedAt": "2026-05-27T08:11:42.005Z"
}
],
"nextCursor": null
},
"_meta": {
"_credits": {
"used": 3,
"balance": 10055811,
"note": "Always"
},
"_cache": {
"is_cached": false,
"note": "Cache disabled for this endpoint"
},
"_rate_limits": {
"limit_minute": 5000,
"limit_day": null,
"remaining_minute": 4999,
"remaining_day": null,
"notice": "We have decided to remove our daily rate limits. Please remove any references to these in your integrations."
}
}
}