Tracking Links
FansMetric dataList Tracking Links
Lists the account's tracking campaigns from the FansMetric database, each with revenue, cost, and tags attached. Same resource and same permission as the OnlyFans-relayed list — this one adds FansMetric attribution and filters, at the cost of scraper-bounded freshness (~30 min). Requires permission api_tracking_links_list.
https://public-api.fansmetric.comAuthorization
defaultAuthorizationBearer <token>Send your FansMetric API key as a Bearer token in the Authorization header.
In: header
Path Parameters
account_id*integerOnlyFans numeric account ID.
Query Parameters
limitintegerPage size. Default 10, max 25.
offsetintegerRows to skip. Default 0.
fieldstringSort column. One of
created_date(default),name,subscribers_counts,transitions_counts,clicks_count.sortstringdesc(default) orasc.with_deletedbooleanInclude deleted campaigns. Default
true.searchstringMatch campaign name or custom name (case-insensitive).
tag_idsarrayComma-separated tag IDs. Returns campaigns matching any of them.
visibilitystringWhich campaigns to return by hide state:
visible(default),hidden(only hidden) orall. Replaces the removedinclude_hiddenboolean — passvisibility=allfor the oldinclude_hidden=truebehaviour.start_datestringWindow start for revenue and subscriber counts. Absent → all-time.
end_datestringWindow end. Absent → all-time.
Response Fields
data.list[].idintegerCampaign ID.
data.list[].campaignNamestringCampaign name.
data.list[].campaignCodeintegerNumeric code embedded in the tracking URL.
data.list[].campaignUrlstring | nullFull tracking URL.
data.list[].countSubscribersintegerSubscribers claimed in the window (or all-time when no window is given).
data.list[].allCountSubscribersintegerAll-time subscribers claimed.
data.list[].countTransitionsintegerTotal click-throughs (all-time).
data.list[].createdAtstring | nullCreation timestamp.
data.list[].endDatestring | nullExpiry timestamp, or
null.data.list[].customNamestring | nullCustom name for internal labelling.
data.list[].customSourceUrlstring | nullCustom traffic source URL.
data.list[].notestring | nullFree-text note.
data.list[].isHiddenbooleanWhether the campaign is hidden in the UI.
data.list[].isRevenueSharedbooleanWhether revenue is shared with another creator.
data.list[].lastScannedAtstring | nullWhen this row was last refreshed.
data.list[].user.usernamestringOwning creator's OnlyFans username.
data.list[].tags[]arrayTags on this campaign. Each:
{ id, name, color, created_at }.data.list[].revenue.totalstringNet revenue attributed to this campaign.
data.list[].revenue.spendersCountintegerDistinct spenders in the window.
data.list[].revenue.revenuePerSubscriberstringAverage revenue per claimed subscriber.
data.list[].revenue.conversionToSpenderstringFraction of claimed subscribers who spent.
data.list[].cost.perPromostring | nullPromo cost you configured.
data.list[].cost.perSubstring | nullCost per claimed subscriber.
data.list[].cost.profitstring | nullRevenue minus promo cost.
data.list[].cost.roistring | nullReturn on investment (percent).
data.list[].links.related.subscribersstringURL to fetch subscribers claimed via this campaign.
data.hasMorebooleanWhether more pages remain.
data.totalCountintegerTotal matching rows across all pages.
_pagination.next_pagestringURL for the next page. Omitted on the last page.
dataobject | arrayEndpoint-specific payload. See the fields below for this route.
_meta._credits.usedintegerCredits consumed by this request (currently always
1)._meta._rate_limits.limit_minuteintegerMaximum requests per minute for the organization.
_meta._rate_limits.remaining_minuteintegerRemaining requests in the current minute window.
_meta._rate_limits.limit_dayintegerMaximum requests per day for the organization.
_meta._rate_limits.remaining_dayintegerRemaining requests in the current day window.
| Field | Type | Description |
|---|---|---|
| data.list[].id | integer | Campaign ID. |
| data.list[].campaignName | string | Campaign name. |
| data.list[].campaignCode | integer | Numeric code embedded in the tracking URL. |
| data.list[].campaignUrl | string | null | Full tracking URL. |
| data.list[].countSubscribers | integer | Subscribers claimed in the window (or all-time when no window is given). |
| data.list[].allCountSubscribers | integer | All-time subscribers claimed. |
| data.list[].countTransitions | integer | Total click-throughs (all-time). |
| data.list[].createdAt | string | null | Creation timestamp. |
| data.list[].endDate | string | null | Expiry timestamp, or null. |
| data.list[].customName | string | null | Custom name for internal labelling. |
| data.list[].customSourceUrl | string | null | Custom traffic source URL. |
| data.list[].note | string | null | Free-text note. |
| data.list[].isHidden | boolean | Whether the campaign is hidden in the UI. |
| data.list[].isRevenueShared | boolean | Whether revenue is shared with another creator. |
| data.list[].lastScannedAt | string | null | When this row was last refreshed. |
| data.list[].user.username | string | Owning creator's OnlyFans username. |
| data.list[].tags[] | array | Tags on this campaign. Each: { id, name, color, created_at }. |
| data.list[].revenue.total | string | Net revenue attributed to this campaign. |
| data.list[].revenue.spendersCount | integer | Distinct spenders in the window. |
| data.list[].revenue.revenuePerSubscriber | string | Average revenue per claimed subscriber. |
| data.list[].revenue.conversionToSpender | string | Fraction of claimed subscribers who spent. |
| data.list[].cost.perPromo | string | null | Promo cost you configured. |
| data.list[].cost.perSub | string | null | Cost per claimed subscriber. |
| data.list[].cost.profit | string | null | Revenue minus promo cost. |
| data.list[].cost.roi | string | null | Return on investment (percent). |
| data.list[].links.related.subscribers | string | URL to fetch subscribers claimed via this campaign. |
| data.hasMore | boolean | Whether more pages remain. |
| data.totalCount | integer | Total matching rows across all pages. |
| _pagination.next_page | string | URL for the next page. Omitted on the last page. |
| data | object | array | Endpoint-specific payload. See the fields below for this route. |
| _meta._credits.used | integer | Credits consumed by this request (currently always 1). |
| _meta._rate_limits.limit_minute | integer | Maximum requests per minute for the organization. |
| _meta._rate_limits.remaining_minute | integer | Remaining requests in the current minute window. |
| _meta._rate_limits.limit_day | integer | Maximum requests per day for the organization. |
| _meta._rate_limits.remaining_day | integer | Remaining requests in the current day window. |
curl --request GET "https://public-api.fansmetric.com/v1/100000001/fm/tracking-links?limit=20&offset=0&field=sample_field" \
--header "Authorization: Bearer YOUR_API_KEY"Response
200