TEASEDocs
ProductsClubHow-to

Auto-fill a country slot from the free pool

Reuse a spare, already-minted OnlyFans link for a new (domain, country, arm) slot instead of minting a new one — one confirm, or a whole country pack at once.

Who this is for: a workspace owner or traffer.

The free pool is every hidden, no-traffic OnlyFans link sitting idle on your account. Dressing reuses one onto a new (domain, country, arm) slot — zero new OnlyFans mint, fully reversible.

See what's available

curl https://app.tease.link/api/admin/free-pool \
  -H "Authorization: Bearer $TEASE_API_KEY"

Returns every hidden link, each flagged dressable (a real, still-live OF offer — a link the scan can no longer find on OnlyFans is shown, greyed out, but is never dressable or counted as free), plus counts.paid / counts.ftl — how many spares are actually usable per arm right now.

Dress a single slot

Preview (dry run)

curl -X POST https://app.tease.link/api/admin/free-pool/suggest \
  -H "Authorization: Bearer $TEASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "yourdomain.com", "country": "DE", "arm": "ftl" }'
{ "already_dressed": false, "would_dress": true, "fallback": "",
  "spare": { "provider_id": "pv_881", "code": "c1204", "name": "old-german-trial",
             "country_hint": "DE" },
  "auto_name": "DE · yourpage · триал" }

Writes nothing — it's the confirm-before-you-commit step. already_dressed: true means this slot already has a live route; fallback: "shared_pool" means the arm's pool is empty and dressing would fall back to the domain's shared default instead of a per-country link.

Confirm

curl -X POST https://app.tease.link/api/admin/free-pool/dress \
  -H "Authorization: Bearer $TEASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "yourdomain.com", "country": "DE", "arm": "ftl" }'
{ "dressed": true, "reused": false, "fallback": "", "provider_id": "pv_881",
  "link_id": 1093, "domain": "yourdomain.com", "country": "DE", "arm": "ftl",
  "link_type": "trial", "url": "https://onlyfans.com/...", "auto_name": "DE · yourpage · триал" }
FieldTypeRequiredDescription
domainstringyesMust already be registered.
countrystringnoISO code; empty = the arm-wide default slot.
armstringnopaid or ftl. Defaults to paid.
provider_idstringno (dress only)Pin a specific spare instead of letting the engine pick. Must be a hidden spare in this arm's pool, or 404 spare_not_found.

Idempotent, and never a blind pick

Calling /dress on an already-live slot doesn't spend a second spare — it just returns the existing route (reused: true). Without an explicit provider_id, the engine picks a spare that already has traffic from that country first, otherwise the oldest spare in the pool (FIFO). If the pool is genuinely empty, dressing still succeeds — the slot gets an OF-free shared-pool row (fallback: "shared_pool", url: "", resolved server-side) rather than auto-minting a new OnlyFans link, which stays a deliberate, separate action.

Dress a whole country pack

Skip the per-link confirm and dress every country in one call — one spare per country, in order, falling back to the shared pool wherever the pool runs dry:

curl -X POST https://app.tease.link/api/admin/free-pool/dress-batch \
  -H "Authorization: Bearer $TEASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "yourdomain.com", "arm": "paid", "countries": ["DE", "FR", "IT", "ES"] }'

Returns { requested, dressed, reused, fallback, results: [...] } — a per-country result plus the batch summary.

What's next

Check the result with verify smart-link routing, or reclaim a slot if you're dropping a country instead.

On this page