TEASEDocs
ProductsClubHow-to

Resolve what a fan actually bought

For a content-less PPV payment, find the exact media/bundle the fan purchased by reading their live chat.

Who this is for: chatters reconciling a payment that arrived with no linked content.

See content_id vs vault media_id for why this lookup exists at all: OnlyFans never tells us which media a PPV payment paid for. This endpoint answers it the way the OnlyFans app itself would — by opening the fan's chat live and finding the matching purchased message.

curl "https://app.tease.link/api/admin/content/for-payment?fan_id=12345&price_cents=1500&to_ts=1751280000" \
  -H "Authorization: Bearer $TEASE_API_KEY"

Query parameters

FieldTypeRequiredDescription
fan_idstringyesThe fan who paid.
price_centsintegernoThe payment amount — matched within ±1¢.
from_ts / to_tsintegernoBound the payment time; to_ts (the payment instant) is preferred as the "nearest in time" anchor when both are given.
limitintegerno1–5. How many chat pages to scan (each page ≈ 1 OFAPI credit); stops at the first match. Defaults to 3.

Response shape

{
  "found": true,
  "message_id": "m_5521",
  "price_cents": 1500,
  "sold_at": "2026-08-14T10:22:00Z",
  "bundle_size": 3,
  "media": [
    { "content_id": 88120, "type": "photo", "preview_url": "https://cdn2.onlyfans.com/..." }
  ],
  "note": "",
  "capturing": false
}

found: false comes back with a soft note (e.g. "vendor error"), never a 500 — a missing credential, an empty chat, or a vendor hiccup all degrade the same way.

This result is remembered

A successful resolution is idempotently written into the content_sale ledger, so a repeat lookup for the same purchase is instant next time and the ledger's coverage improves permanently — you're not re-spending an OFAPI credit on the same answer twice.

What's next

Once resolved, see the fan's full purchase history with Check a fan's purchase history.

On this page