See what's actually selling
Read top-performing media and tags by revenue, with unlock rate, over a chosen window.
Who this is for: a workspace owner (the view_analytics grant).
performance ranks vault media and tags by the revenue they actually drove, over a time window
you choose — the read behind "what's working" in the panel.
curl "https://app.tease.link/api/admin/vault/performance?limit=20" \
-H "Authorization: Bearer $TEASE_API_KEY"Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
from_ts | integer | no | Window start, Unix seconds. Defaults to 30 days ago. |
to_ts | integer | no | Window end, Unix seconds. Defaults to now. |
limit | integer | no | Max rows per list (media and tags), 1–200. Defaults to 20. |
Response shape
{
"range": { "from_ts": 1748688000, "to_ts": 1751280000 },
"media": [
{
"media_id": "m_88130",
"title": "red set — full video",
"media_type": "video",
"folder_name": "Red lingerie set",
"has_cover": true,
"tags": ["lingerie", "solo"],
"sent": 247,
"opened": 181,
"purchased": 89,
"revenue_cents": 142800,
"unlock_rate": 0.34
}
],
"tags": [
{ "tag": "lingerie", "sent": 988, "opened": 731, "purchased": 301, "revenue_cents": 461500, "unlock_rate": 0.29 }
],
"ppv_sends": 1320
}Both media and tags are sorted by revenue_cents then purchased, descending.
unlock_rate is purchased / sent, rounded to 3 places — null only when the row had zero
sends in the window (nothing to divide by), so a null means "not sent in this window", not
"sent but not reliable enough to show".
What counts as a send
Only OnlyFans PPV sends made through TEASE (OutboundMessage.kind == 'ppv') are counted —
a manual send from the OnlyFans app itself doesn't appear here.
Revenue is bundle-attributed, not exclusive
A multi-media PPV credits its full price to every piece of media it contained — this is
"revenue this item participated in", not a per-file exclusive share. Two items sold together
in one $20 PPV each show revenue_cents: 2000, not $10 apiece.
What's next
Turn a low-supply, high-revenue tag into a shoot list with Find what to shoot next, or check a single item's per-buyer detail with Check where a file is used.