Auto-provision link slots
Preview a domain's whole paid + trial link batch, then commit it in one call instead of adding slots one at a time.
Adding one link at a time works fine for a single fix, but a new domain usually needs the whole standing set — a trial link for the countries that get one, a paid link for everything else. Provisioning builds that whole plan and runs it in one call: for each (country, arm) slot it either mints a new OnlyFans link or adopts one that already exists under this domain's deterministic name, then registers it and re-stamps the domain's buttons.
This is unrelated to Club's free-pool spare dressing (see Concepts), which reuses an already-existing hidden campaign instead of creating anything. Provisioning here always deals in real, named OnlyFans links.
Preview first
curl -X POST https://app.tease.link/api/admin/domains/links.creator.com/provision-links/preview \
-H "Authorization: Bearer $TEASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "trial_countries": ["US","GB","DE"], "paid_countries": "rest", "default_paid": true }'Preview is a DB-only dry run — it never calls OnlyFans and writes nothing. It diffs the plan
against this domain's existing segment_links rows and returns, per slot, whether a row already
exists:
{ "domain": "links.creator.com", "would_create": 3, "already_exist": 40,
"slots": [ { "country": "US", "arm": "ftl", "status": "new" }, ... ] }would_create means "no row in our database yet" — it honestly can't tell you whether the
real run will mint a brand-new OnlyFans link or silently adopt one that already exists on the
vendor side by name. That distinction only shows up once you run the real provision, which is the
only call that actually lists OnlyFans's own links.
Commit the batch
Same body, no /preview:
curl -X POST https://app.tease.link/api/admin/domains/links.creator.com/provision-links \
-H "Authorization: Bearer $TEASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "trial_countries": ["US","GB","DE"], "paid_countries": "rest", "default_paid": true }'This is synchronous — you get the finished summary back, not a job id. Idempotent: re-running the same (or an overlapping) config reuses any row that already carries a URL instead of minting a second link for that slot.
Configuring the plan
| Field | Type | Default | Meaning |
|---|---|---|---|
trial_countries | list of ISO codes | [] | Countries that get a free-trial (ftl) link. Empty unless you list them — there's no implicit "give everyone a trial" default at the API level. |
paid_countries | list of ISO codes, or the literal "rest" | "rest" | Countries that get a paid tracking link. "rest" is the standing full list — the 16 high-income countries also eligible for a trial, plus a second tier of paid-only countries, plus Russia. |
default_paid | bool | true | Also create one country: "" paid link — the long-tail catch-all for every country not explicitly listed. |
trial_days | int | 30 | OFAPI trial length: 1, 3, 7, 14, 30, 90, 180, 360. Only affects trial links created fresh by this call — an adopted or already-existing trial keeps its own original duration. |
Sending {} therefore provisions the full paid list plus the long-tail default, but zero
trial links — list trial_countries explicitly whenever you want free trials in the batch.
How to know it worked
unresolved in the response should be empty, and created + adopted + reused should match the
preview's would_create + already_exist. List the domain's links
afterward — the new rows should show up active and, once a smart link or button points at them,
stamped.
If it didn't work
404 domain_not_found— the hostname doesn't match a domain on your account.400 country_invalid— a code intrial_countries/paid_countriesisn't a real ISO alpha-2 (e.g."USA"instead of"US").502 link_not_permanent— a newly created trial link came back from OnlyFans without a permanent/never-expiring guarantee; nothing in the batch was registered.502 provision_failed— any other OFAPI or database failure aborted the whole batch; retry is safe (nothing partial was committed).- A slot listed in
unresolved— that specific (country, arm) couldn't be resolved to any URL; everything else in the batch still went through.
What's next
- Add, list, or remove a link on a domain — fix or add a single slot afterward.
- Once slots exist, a smart link can route visitors across them automatically instead of you picking a URL by hand.
- Troubleshooting
Add, list, or remove a link on a domain
The four raw moves on a domain's OnlyFans-link inventory, so it reflects what's actually in rotation.
See ad spend and ROI for one link
Pull one link's own two revenue numbers and its paying fans, so you can judge whether that specific link is profitable — not just the domain as a whole.