TEASEDocs
ProductsLinkLanding-page builder

Import an existing bio-link page

Bring links already built on Linktree, Stan, Carrd, or a similar page into draft TEASE buttons from one URL.

Instead of re-typing every link by hand, paste the URL of an existing bio-link page (Linktree, Stan, Bio.link, Carrd, or a generic page) and let the importer scan it into a reviewable list of buttons before anything is saved.

Scan the page

curl -X POST "https://app.tease.link/api/admin/import" \
  -H "Authorization: Bearer $TEASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://linktr.ee/yourolddpage" }'

The response is an ImportPreview — nothing is written yet: profile (name/bio/avatar/platform guessed from the page), buttons[] (each with a text_value, url, guessed icon, and an optional price_hint), headers[], and warnings[]. status is complete/partial when buttons were found cleanly, redirect when the URL just bounces to a single destination, or review when the page couldn't be parsed automatically and needs manual editing — needs_review: true in that case.

A repeat scan of the exact same URL from the same account returns the cached result for about a minute instead of re-fetching, and both per-account and per-target-domain rates are limited so a runaway loop can't hammer the source site.

Commit the buttons you want

Review/edit the previewed buttons in the panel, then commit the ones you're keeping:

curl -X POST "https://app.tease.link/api/admin/import/commit" \
  -H "Authorization: Bearer $TEASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "links.creator.com",
    "buttons": [
      { "text_value": "My Instagram", "url": "https://instagram.com/you", "icon": "instagram.svg" }
    ],
    "take_background": true,
    "take_avatar": true,
    "media": { "avatar_url": "https://...", "bg_image_url": "https://..." }
  }'

Buttons land as draft buttons on the target domain (segment T1 by default, or per-audience if the source page had country-targeted variants and you pass placement: "per_segment" with the scanned proposed_segments). apply_mode: "replace_draft" wipes the domain's current draft buttons/segments first; omit it to append instead. take_background/take_avatar pull the old page's background photo and avatar into the domain's own background/avatar slots.

Confirm it worked

The commit response's created_ids lists the new button ids — cross-check the count against how many buttons you sent. Open the domain's draft in the panel: the imported buttons, and (if requested) the background/avatar/profile text, should already be there, still unpublished until you hit Publish.

A social profile isn't a bio page

Pasting a plain Instagram/TikTok/X/YouTube/Facebook/Snapchat profile URL returns needs_review: true with a warning instead of buttons — paste the link to your actual link-in-bio page instead.

What's next

On this page