TEASEDocs
ProductsLinkLanding-page builder

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

KeyValues
shaperounded, pill, square, sharp
fill / fillsOne of glass, liquid, solid, outline, soft_shadow, hard_shadow — or up to 6 in fills to cycle through instead of one flat fill
hoverlift, none, ink, glow, shine, tilt, press, border
animation / anim_speednone/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
textLabel contrast mode: auto, dark, light
font, text_sizeOne of the 12 brand faces; size multiplier 0.7–1.5
aligncenter, icon_left, left
new_tabOpen every button's link in a new tab
width, pad_yFixed 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

On this page