Analytics
List the performance of each employee
/v1/analytics/employees/performanceSend activity and results of each active employee over the window, with the definitions of the Fansquare employee ranking, sorted by net revenue. Only employees with messages or revenue in the window are listed; resolve names with GET /v1/employees. Message counts are updated about every 15 minutes, except for the last hour which is read live (its private media are counted at the next update). private_media_sent and private_media_purchased count paid media only (free media excluded). Revenue excludes refunded orders. The window cannot exceed 31 days.
read:analyticscurl 'https://api.fansquare.so/v1/analytics/employees/performance?start=2026-09-01&end=2026-09-30' \
-H "Authorization: Bearer $API_KEY" \
-H "Fansquare-Version: Amethyste"{
"data": [
{
"user_id": "ki9DZXxpgGz7KiDqHj88eCxHg56W",
"messages_sent": 1,
"mass_dm_messages_sent": 1,
"private_media_sent": 1,
"private_media_purchased": 1,
"fans_contacted": 1,
"conversion_rate": 1,
"net_amount_cents": 4900,
"revenue_per_message_cents": 4900
}
],
"currency": "EUR"
}Parameters
Headers
Fansquare-VersionstringrequiredAPI version to pin. Accepts the mineral name or the release date of a version.
Query
startstringrequiredFirst day of the window (inclusive), e.g.
2026-07-01. Interpreted intimezone. A date-time is accepted too and floored to its local day.endstringrequiredLast day of the window (inclusive: the whole day is covered), e.g.
2026-07-31. Interpreted intimezone. The window cannot exceed 365 days (and less for the finer bucket sizes of the timeseries endpoint); fetch older history with additional requests.timezonestringIANA timezone the window and buckets are computed in, canonical
Area/Locationform (e.g.Europe/Paris). Abbreviations likeCETare rejected. Defaults to UTC.creator_idsstringRestrict to these creators (Fansquare ids from GET /v1/creators). Omit for every creator the key can see. Comma-separated, 50 max.
exclude_disconnected_creatorsstringtrue: leave out the creators whose MYM account is not connected (disconnected, or an expired key). Omit or false: they count, like every creator the key can see.
Valuestruefalseuser_idsstringRestrict to these employees (Fansquare user ids from GET /v1/employees). Comma-separated, 50 max.
Response
OK, application/json
dataarray of objectsrequireduser_idstringrequiredFansquare employee id.
messages_sentintegerrequiredMessages sent by the employee, every surface included (chat, scripts, Mass DM).
mass_dm_messages_sentintegerrequiredPart of
messages_sentsent through Mass DM campaigns.private_media_sentintegerrequiredPaid private media sent, Mass DM excluded. Free media are not counted.
private_media_purchasedintegerrequiredPaid private media of
private_media_sentthe fan bought. Free media are not counted.fans_contactedintegerrequiredDistinct fans the employee sent at least one message to, Mass DM excluded.
conversion_ratenumber | nullrequiredprivate_media_purchased/private_media_sent, from 0 to 1 (4 decimals). Null when no private media was sent.net_amount_centsintegerrequiredNet revenue attributed to the employee, EUR cents, refunded orders excluded.
revenue_per_message_centsnumber | nullrequiredNet revenue per message sent outside Mass DM, in EUR cents (2 decimals, may be below one cent). Null when the employee sent no such message.
currency"EUR"required
curl 'https://api.fansquare.so/v1/analytics/employees/performance?start=2026-09-01&end=2026-09-30' \
-H "Authorization: Bearer $API_KEY" \
-H "Fansquare-Version: Amethyste"{
"data": [
{
"user_id": "ki9DZXxpgGz7KiDqHj88eCxHg56W",
"messages_sent": 1,
"mass_dm_messages_sent": 1,
"private_media_sent": 1,
"private_media_purchased": 1,
"fans_contacted": 1,
"conversion_rate": 1,
"net_amount_cents": 4900,
"revenue_per_message_cents": 4900
}
],
"currency": "EUR"
}