Style every button on the landing page
Change shape, fill, color, animation, and font for every button at once, without editing each one.
You want every button on a domain to share one look — same shape, same fill, same idle
animation — without opening each button and repeating the same edits. That's what the
buttons section of POST /api/admin/bg/ui is for: it's a landing-wide style object, not a
per-button one.
Set the style
Send the full style you want in one call. The object replaces the stored style wholesale — omitted keys fall back to the design's default, they don't keep whatever was there before.
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 '{
"buttons": {
"shape": "pill",
"fill": "solid",
"opacity": 0.95,
"color": "#e0426e",
"hover": "glow",
"animation": "breathe",
"anim_speed": "slow",
"font": "unbounded",
"align": "icon_left",
"width": 320,
"pad_y": 16
}
}'Publish the domain afterward — like every other landing change, this lands in the draft first.
What you can set
| Key | Values |
|---|---|
shape | rounded, pill, square, sharp |
fill / fills | One of glass, liquid, solid, outline, soft_shadow, hard_shadow — or up to 6 in fills to cycle through instead of one flat fill |
hover | lift, none, ink, glow, shine, tilt, press, border |
animation / anim_speed | none/pulse/breathe/float/shake/glow/shine/wobble/heartbeat, speed slow/normal/fast |
color, shadow_color, text_color, icon_color, icon_bg | #rrggbb, or empty string to reset to the stock color |
text | Label contrast mode: auto, dark, light |
font, text_size | One of the 12 brand faces; size multiplier 0.7–1.5 |
align | center, icon_left, left |
new_tab | Open every button's link in a new tab |
width, pad_y | Fixed width in px (160–360) and vertical padding in px (6–28) |
Reset everything to the stock look with { "buttons": null }.
Confirm it worked
Check the response's ui.buttons — it echoes back exactly what got stored (defaults you didn't
override are simply absent). Then look at the domain's live preview: every button should share
the new shape/fill/animation immediately in the draft view.
If a font change doesn't show up
Changing font triggers a server-side re-render of every button's label (labels are pre-baked
SVG images), and the response reports how many in relabeled. If you set font through this
endpoint and the count comes back 0 even though buttons have text, check whether an individual
button already carries its own style.font override (PATCH /api/admin/buttons/{domain}/{tier}/{id})
— a button-level override wins over the landing-wide one for that button.
Platform designs only
This style applies while the domain uses a built-in design (classic or spotlight). A
domain running an uploaded custom HTML design
owns its own look and ignores this section entirely — the style is still saved, so switching
back to a platform design restores it.
What's next
- Same endpoint, a different section: Configure the profile card
- A per-button look instead of landing-wide: Turn a button into a blurred/locked teaser tile
- Back to Landing-page builder