Engagement
List Story Viewers
Returns the paginated list of users who viewed a specific story. Pass only_with_tips=true to materialize a tipper-only list. Requires permission api_stories_list_viewers.
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.
story_id*integerStory ID (from
engagement/stories/{by}orhighlights/story).
Query Parameters
limitintegerPage size. Default 10. Min 1, max 100.
offsetintegerRows to skip.
only_with_tipsstringtrueor1to narrow to viewers who tipped on the story. Forwarded upstream asonlyWithTips=true. Other values (includingfalse) are treated as omitted.
Response Fields
data.list[]arrayViewer rows.
data.list[].idintegerViewer user ID.
data.list[].usernamestringViewer username.
data.list[].namestringDisplay name.
data.list[].viewstring"s"— viewer-scoped projection.data.list[].isStoryLikedbooleanWhether this viewer liked the story.
data.list[].isStoryBlockedUserbooleanWhether the creator has blocked this user from viewing stories.
data.list[].hasStoryTipsbooleanWhether this viewer tipped on the story.
data.list[].hasTopStoryTipsbooleanWhether this viewer is among the top tippers on the story.
data.list[].subscribedBybooleanWhether the calling account subscribes to this viewer.
data.list[].subscribedOnbooleanWhether the viewer subscribes to the calling account.
data.list[].lastSeenstring|nullLast-seen timestamp on the platform (not story-specific).
data.hasMorebooleanWhether more pages are available.
dataobject | arrayEndpoint-specific payload. See the fields below for this route.
_pagination.next_pagestringRelative 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.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[] | array | Viewer rows. |
| data.list[].id | integer | Viewer user ID. |
| data.list[].username | string | Viewer username. |
| data.list[].name | string | Display name. |
| data.list[].view | string | "s" — viewer-scoped projection. |
| data.list[].isStoryLiked | boolean | Whether this viewer liked the story. |
| data.list[].isStoryBlockedUser | boolean | Whether the creator has blocked this user from viewing stories. |
| data.list[].hasStoryTips | boolean | Whether this viewer tipped on the story. |
| data.list[].hasTopStoryTips | boolean | Whether this viewer is among the top tippers on the story. |
| data.list[].subscribedBy | boolean | Whether the calling account subscribes to this viewer. |
| data.list[].subscribedOn | boolean | Whether the viewer subscribes to the calling account. |
| data.list[].lastSeen | string|null | Last-seen timestamp on the platform (not story-specific). |
| data.hasMore | boolean | Whether more pages are available. |
| data | object | array | Endpoint-specific payload. See the fields below for this route. |
| _pagination.next_page | string | 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.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/stories/sample_story_id/viewers?limit=20&offset=0&only_with_tips=sample_only_with_tips" \
--header "Authorization: Bearer YOUR_API_KEY"Response
200