Product-launch waitlists on waitlister.me via REST API...
Waitlister is waitlist software for product launches: hosted signup pages, a referral program with fraud detection, email automation. Signups get a queue position and a referral link; referrals move them up.
Prereq (one human step, free, ~1 minute): an account API key (wl_acct_โฆ) from
https://waitlister.me โ Settings โ API keys, in the WAITLISTER_API_KEY env var. Account
keys work on every plan including free and can create waitlists, so no dashboard steps
are needed after that. (A per-waitlist wl_โฆ key also works for an existing waitlist, but
needs the Growth plan for most endpoints. Prefer the account key.)
API base https://waitlister.me/api/v1 ยท auth header X-Api-Key (NOT Authorization: Bearer) ยท full spec: https://waitlister.me/openapi.json ยท full agent guide:
https://waitlister.me/skill.md
curl "https://waitlister.me/api/v1/me" -H "X-Api-Key: $WAITLISTER_API_KEY"
# โ plan, waitlists.can_create (a dry run of step 1), ai_credits.remaining
# 401 = key missing, wrong type, or revoked: ask the user, don't probe other endpoints
curl -X POST "https://waitlister.me/api/v1/waitlists" \
-H "Content-Type: application/json" -H "X-Api-Key: $WAITLISTER_API_KEY" \
-d '{"name":"My Product","landing_page":{"headline":"Join the beta","description":"Early access for founders.","button_text":"Join the waitlist","theme":"dark"}}'
# โ 201: data.waitlist.key (use everywhere below), data.waitlist.form_action_url
curl -X POST "https://waitlister.me/api/v1/waitlist/WAITLIST_KEY/landing-page/publish" \
-H "X-Api-Key: $WAITLISTER_API_KEY"
# โ hosted_page_url, live at https://waitlister.me/p/{slug}
Pages are drafts until you publish. {"unpublish": true} in the publish body takes
the page offline again (status becomes "unpublished"). One page per waitlist (creating
a second โ 409).
Once published, edits are live. There is no separate draft copy: a PATCH shows on the
public page right away, and so does a generate edit when the AI version is the one
published. Confirm with the user before changing a published page.
# Add a signup (works on free plan with an account key; idempotent per email)
curl -X POST ".../api/v1/waitlist/WAITLIST_KEY/sign-up" -H "X-Api-Key: $WAITLISTER_API_KEY" \
-H "Content-Type: application/json" -d '{"email":"user@example.com"}'
# Stats for "X people waiting" widgets
curl ".../api/v1/waitlist/WAITLIST_KEY/stats" -H "X-Api-Key: $WAITLISTER_API_KEY"
# Read the page (status, copy, hosted_page_url, analytics)
curl ".../api/v1/waitlist/WAITLIST_KEY/landing-page" -H "X-Api-Key: $WAITLISTER_API_KEY"
# Update copy/theme/SEO (any subset; unknown keys โ 400 that lists the allowed keys)
curl -X PATCH ".../api/v1/waitlist/WAITLIST_KEY/landing-page" -H "X-Api-Key: $WAITLISTER_API_KEY" \
-H "Content-Type: application/json" -d '{"headline":"New headline","seo":{"title":"โฆ"}}'
# AI-designed page (costs 1 AI credit, takes under a minute; edit later with "is_edit": true)
curl -X POST ".../api/v1/waitlist/WAITLIST_KEY/landing-page/generate" -H "X-Api-Key: $WAITLISTER_API_KEY" \
-H "Content-Type: application/json" -d '{"prompt":"dark, bold, dev-tool aesthetic"}'
# Remove a subscriber by email or id (Growth+ plan, e.g. cleaning up a test signup)
curl -X DELETE ".../api/v1/waitlist/WAITLIST_KEY/subscribers/user@example.com" \
-H "X-Api-Key: $WAITLISTER_API_KEY"
# Tags (Growth+): list with subscriber counts; tag a subscriber; list one tag's subscribers
curl ".../api/v1/waitlist/WAITLIST_KEY/tags" -H "X-Api-Key: $WAITLISTER_API_KEY"
curl -X PUT ".../api/v1/waitlist/WAITLIST_KEY/subscribers/user@example.com" -H "X-Api-Key: $WAITLISTER_API_KEY" \
-H "Content-Type: application/json" -d '{"add_tags":["beta"]}'
curl ".../api/v1/waitlist/WAITLIST_KEY/subscribers?tag=beta" -H "X-Api-Key: $WAITLISTER_API_KEY"
Node SDK (optional): npm install waitlister reads WAITLISTER_API_KEY automatically;
waitlister-js/waitlister-sdk/waitlister-node/@waitlister/sdk are deprecated
aliases of the same package. No Python SDK: use the REST API from Python.
MCP server (optional): if your runtime supports MCP servers, @waitlister/mcp (registry
io.github.ilpr/waitlister) exposes these operations as native tools with the same
account key.
โฆ/landing-page/generate with "is_edit": true
(theme and seo PATCH fine on both page types).add_tags / remove_tags take tag names or ids, and a new name creates the tag;
tags replaces the whole set. Sending tags together with add_tags/remove_tags โ<form>), or when a standard page's
headline is under 3 characters. API publishes skip the social-share OG image (a
dashboard publish backfills it).X-RateLimit-Limit / -Remaining / -Reset on every response.status: "published" and a hosted_page_url.hosted_page_url: the headline renders.success: true + a queue position, then a higher
subscribers_total in stats. On Growth+, delete it afterwards with the DELETE call
above.Docs: https://waitlister.me/docs/overview (append .md to any /docs/ URL for raw
markdown) ยท Plans and limits: https://waitlister.me/pricing.md