Reach

List Promotion Subscribers

Returns the paginated list of subscribers who joined via a specific promotion. Each row is a full user profile with the discounted price, regular price, and lifetime spend totals. Requires permission api_reach_list_promotion_subscribers.

https://public-api.fansmetric.com
GET/v1/{account_id}/reach/promotions/{promo_id}/subscribers
Bearer

Authorization

default
AuthorizationBearer <token>

Send your FansMetric API key as a Bearer token in the Authorization header.

In: header

Path Parameters

  • account_id*integer

    OnlyFans numeric account ID.

  • promo_id*integer

    Promotion ID from /reach/promotions.

Query Parameters

  • limitinteger

    Page size. Default 10. Min 1, max 100.

  • offsetinteger

    Rows to skip.

Response Fields

  • data.list[]array

    Subscriber rows. Newest claims first.

  • data.list[].idinteger

    Subscriber user ID.

  • data.list[].usernamestring

    Subscriber username.

  • data.list[].subscribedOnData.pricenumber

    Discounted price the fan paid via this promo.

  • data.list[].subscribedOnData.regularPricenumber

    Normal subscription price (what they'd pay without the promo).

  • data.list[].subscribedOnData.subscribeAtstring

    When the fan subscribed (ISO 8601).

  • data.list[].subscribedOnData.expiredAtstring

    When their subscription expired.

  • data.list[].subscribedOnData.durationstring

    Human-readable subscription length ("6 months", "1 month", …).

  • data.list[].subscribedOnData.totalSummnumber

    Lifetime spend across tips, messages, posts, streams, subscriptions.

  • data.list[].promoOffersarray

    Other promos this user is eligible for. Often empty.

  • data.hasMoreboolean

    Whether more pages are available.

  • dataobject | array

    Endpoint-specific payload. See the fields below for this route.

  • _pagination.next_pagestring

    Relative URL for the next page, with the cursor or offset already applied. Append it to the API base URL and send it as-is. Omitted entirely on the last page.

  • _meta._credits.usedinteger

    Credits consumed by this request (currently always 1).

  • _meta._rate_limits.limit_minuteinteger

    Maximum requests per minute for the organization.

  • _meta._rate_limits.remaining_minuteinteger

    Remaining requests in the current minute window.

  • _meta._rate_limits.limit_dayinteger

    Maximum requests per day for the organization.

  • _meta._rate_limits.remaining_dayinteger

    Remaining requests in the current day window.

curl --request GET "https://public-api.fansmetric.com/v1/100000001/reach/promotions/sample_promo_id/subscribers?limit=20&offset=0" \
  --header "Authorization: Bearer YOUR_API_KEY"

Response

200
{
"data":{
"hasMore":true
"list":[
0:{
"id":100000007
"username":"fan_XXXXX"
"name":"Fan XX"
"view":"x"
"subscribedBy":true
"subscribedByExpireDate":"2035-10-08T02:34:38+00:00"
"subscribedOnDuration":"6 months"
"subscribedOnData":{
"price":9.99
"regularPrice":14.99
"subscribeAt":"2025-10-08T02:34:37+00:00"
"expiredAt":"2026-04-20T03:34:55+00:00"
"duration":"6 months"
"tipsSumm":0
"subscribesSumm":49.95
"messagesSumm":25
"postsSumm":0
"streamsSumm":0
"totalSumm":74.95
"lastActivity":"2026-03-20T03:34:55+00:00"
}
"promoOffers":[]
}
]
}
"_pagination":{
"next_page":"/v1/100000002/reach/promotions/52752862/subscribers?limit=10&offset=10"
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":999
"limit_day":50000
"remaining_day":49999
}
}
}