ProductsLinkLanding-page builder
Build a teaser card stack/carousel
Show up to 8 locked previews with swipe or pin instead of one teaser tile.
Instead of a single button teaser tile,
the stack section of POST /api/admin/bg/ui renders a deck of up to 8 locked preview cards a
visitor can page through — sticky (top card stays, next one slides over), pinned-swap, or a
plain carousel.
Set up the stack
curl -X POST "https://app.tease.link/api/admin/bg/ui?domain=links.creator.com" \
-H "Authorization: Bearer $TEASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"stack": {
"enabled": true,
"mode": "pinned_swap",
"direction": "horizontal",
"gap": 20,
"snap": true,
"dots": { "on": true, "position": "bottom", "style": "bar" },
"cards": [
{
"src": "teaser_0123456789abcdef.webp",
"title": "New shower set",
"subtitle": "12 photos",
"lock": true,
"lock_label": "$8",
"href": "https://onlyfans.com/creator"
},
{
"src": "teaser_fedcba9876543210.mp4",
"kind": "video",
"poster": "teaserp_fedcba9876543210.webp",
"title": "Behind the scenes",
"lock": true,
"lock_label": "FREE"
}
]
}
}'| Key | Meaning |
|---|---|
mode | sticky (default) — top card sticks, next slides over it; pinned_swap; carousel |
direction | down (default), up, horizontal |
stick, gap, spines | Pixel offsets for the sticky effect (0–160), gap between cards (0–96), and how many card edges peek out behind the top one (1–8) |
snap | Snap-scroll between cards |
scale / translate / rotate / fade | Optional depth effects for cards behind the top one, each { "on": true, "strength": 0–1 } |
dots | Progress indicator: { on, position: right/left/bottom, style: dot/bar/ring, active, inactive } colors |
cards[].src | An uploaded teaser image (.webp) or video (.mp4) filename |
cards[].kind | "video" — must match a .mp4 src |
cards[].title, .subtitle | Up to 60 / 120 characters |
cards[].lock, .lock_label | Lock badge with caption, up to 24 characters |
cards[].href | Optional per-card link (http(s) only); without one the card isn't clickable on its own |
Cards with no src are rejected — every card needs an image or video. { "stack": null } (or
an empty cards list with enabled omitted) removes the stack.
Confirm it worked
ui.stack.cards in the response should list your cards in order. On the published/preview page,
swipe or click through — the configured mode/direction should match what you see, and each
card's lock badge and caption should render as set.
What's next
- Turn a button into a blurred/locked teaser tile for a single card instead of a stack
- Place elements freely on a canvas
- Back to Landing-page builder