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 · триал" }| Field | Type | Required | Description |
|---|---|---|---|
domain | string | yes | Must already be registered. |
country | string | no | ISO code; empty = the arm-wide default slot. |
arm | string | no | paid or ftl. Defaults to paid. |
provider_id | string | no (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.