TEASEDocs
ProductsClubHow-to

Get cohort-matched content recommendations

Given a content item or an audience filter, find unseen vault items ranked for fit to that cohort.

Who this is for: chatters composing a send to a specific audience.

recommend is the vault's highest-leverage read: give it a cohort, and it returns unseen content — items that cohort has never been sent — ranked by how well it fits what that cohort actually buys.

curl "https://app.tease.link/api/admin/vault/recommend?source=tiktok&rfm_tag=whale&limit=20" \
  -H "Authorization: Bearer $TEASE_API_KEY"

Query parameters

Provide either content_id (build the cohort from that content's buyers) or one or more audience filters — the same filter shape the broadcast composer uses. All are optional and combine as AND.

FieldTypeDescription
content_idintegerBuild the cohort from the buyers of this content instead of explicit filters.
sourcestringAcquisition source (e.g. tiktok).
countrystringISO country code.
rfm_tagstringLifecycle/RFM tag (e.g. whale, dormant).
spend_min / spend_maxintegerLifetime spend bounds, in cents.
inactive_daysintegerOnly fans inactive at least this many days.
bought_ppvbooleanRestrict to fans who have (or haven't) bought a PPV.
new_vs_returningstringnew or returning.
is_trialbooleanRestrict to trial (or non-trial) fans.
limitinteger1–200. Defaults to 20.

Response shape

{
  "items": [
    {
      "media_id": "m_88130",
      "title": "red set — full video",
      "tags": ["lingerie", "solo"],
      "cover": true,
      "unlock_rate": 0.4,
      "fit_reason": "the cohort buys 'lingerie' — this content is in the same theme, unlock-rate 40%"
    }
  ],
  "cohort_summary": {
    "filters": { "source": "tiktok", "rfm_tag": "whale" },
    "source": "tiktok",
    "fan_count": 312
  },
  "thin": false
}

Ranking is fit × unlock-rate: fit comes from how strongly the item's tags overlap the tags this cohort has actually paid to unlock in the last 30 days (not just tags it's seen). Items already sent to any fan in the cohort are excluded outright.

FieldDescription
fit_reasonA short, human-readable reason — empty string ("") when the ranking fell back to unlock-rate alone (see thin below), never a fabricated explanation.
cohort_summary.fan_countSize of the resolved audience. When built from content_id, also carries from_content_id and buyer_count.
thintrue when the cohort has no buying-tag signal yet (a new or very small cohort). Items are then ranked by unlock-rate alone, and fit_reason is empty for all of them — treat the order as a weaker suggestion.

Recommendations reuse the exact same audience engine (materialize_audience) as the broadcast composer and content_cohorts — there is no second, parallel cohort definition to fall out of sync with.

What's next

Send the top recommendation as a drop if it's a whole folder, or check what's actually selling to see the tags this ranking is drawing from.

On this page