API Reference / Endpoints
Create Landing Page
Creates the waitlist's hosted landing page from structured fields — headline, description, button text, theme, background, and SEO. The page is created as a draft: nothing goes live until you call Publish Landing Page.
Each waitlist has one landing page — if one already exists (created here or in the dashboard), this endpoint returns 409; use Update Landing Page instead.
Available on every plan with an account API key (wl_acct_…); per-waitlist keys work on Growth+.
You can also provision the page in the same request that creates the waitlist — pass a landing_page object to Create Waitlist.
Endpoint Details
- URL:
https://waitlister.me/api/v1/waitlist/{waitlistKey}/landing-page - Method:
POST
Request
Headers
Content-Type: application/json
X-Api-Key: wl_acct_your-account-api-key
Body Parameters
All text fields are plain text — HTML is rejected. Unknown keys return 400 listing the allowed keys.
| Parameter | Type | Required | Description |
|---|---|---|---|
headline | String | Yes | The page's main title (3–120 characters) |
description | String | No | Supporting copy under the headline (max 1000 characters) |
button_text | String | No | Submit-button label (max 40 characters, default "Join the waitlist") |
collect_name | Boolean | No | Add a name input to the signup form |
collect_phone | Boolean | No | Add a phone input to the signup form |
background | Object | No | { "type": "color" | "gradient", "value": "…" } — hex color or CSS gradient string. Image backgrounds are dashboard-only |
theme | String | No | light (default) or dark |
seo | Object | No | title (max 70), description (max 200), keywords (max 10 × 40 chars), og_title, og_description |
Example Request
curl -X POST "https://waitlister.me/api/v1/waitlist/WAITLIST_KEY/landing-page" \
-H "Content-Type: application/json" \
-H "X-Api-Key: wl_acct_your-account-api-key" \
-d '{
"headline": "Join the beta",
"description": "Early access for the first 100 signups.",
"button_text": "Get early access",
"collect_name": true,
"theme": "dark",
"background": { "type": "color", "value": "#0F172A" }
}'
Response
Success Response 201
{
"success": true,
"data": {
"landing_page": {
"id": "aBcDeFgH123",
"status": "draft",
"page_type": "standard",
"preview": {
"headline": "Join the beta",
"description": "Early access for the first 100 signups.",
"button_text": "Get early access"
},
"hosted_page_url": null,
"draft_note": "Publish with POST /api/v1/waitlist/{waitlistKey}/landing-page/publish"
}
}
}
Error Responses
| Status Code | Description |
|---|---|
400 | Missing/invalid headline, an unknown key (the message lists allowed keys), or a field over its length cap |
401 | Missing or invalid API key / waitlist key |
409 | The waitlist already has a landing page — update it instead |
429 | Rate limit exceeded (5/min; 10/min on Growth+) |
503 | The landing-page API is temporarily disabled |
Next Steps
- Publish the page to go live at
waitlister.me/p/{slug} - Update fields any time — live pages update immediately
- Or let the AI builder generate the whole page
