Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /sites/:id/landers | List landers |
| POST | /sites/:id/landers | Create lander |
| GET | /landers/:lid | Lander detail |
| PATCH | /landers/:lid | Update — publish by setting status: "published" |
| DELETE | /landers/:lid | Delete |
| GET | /landers/designs | Available design templates with their color options |
Lander payload
| Field | Type | Description |
|---|---|---|
slug | string | Public URL: /l/:slug/. Empty → generated from name. |
design_id | string | Template id from GET /landers/designs (e.g. hero, spotlight, cards…). |
status | string | draft (default) | published. |
heading / subheading | string | Hero copy. |
cta_text | string | Button label, e.g. "Get the deal". |
offer_ids | uuid[] | Offers featured on the lander, in order. |
background | string|null | Background image URL (media library). |
colors | object | Design-specific color map — check the design's definition via /landers/designs. |
blocks | array | Free-form content blocks the design supports. |
meta_title / meta_description | string | SEO overrides. |
Create and publish a lander
curl -X POST $API/sites/$SITE_ID/landers \
-H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{
"slug": "black-friday-vpn",
"design_id": "spotlight",
"heading": "Black Friday: 70% off the top-rated VPN",
"subheading": "Tested in our lab, discounted for our readers.",
"cta_text": "Claim the discount",
"offer_ids": ["'$OFFER_ID'"],
"status": "published"
}'
# → live at https://your-site.com/l/black-friday-vpn/