Signup API
Accept signups from your server with a scoped API key.
Use this endpoint when you collect emails on your own backend and want Waitlyze to own verification, referrals, and storage. Browsers should use the hosted page or embed instead — never expose an API key client-side.
Create an API key first
Go to Settings → Integrations → API keys, choose a waitlist, name the key, and set expiry. Copy the secret before closing: only its hash is stored. See API keys.
Keep keys on your server
A key grants signup-write access to one waitlist. Store it in a server environment variable such as WAITLYZE_API_KEY. Never put it in a browser bundle or public repository.
Create a signup
POST /api/waitlist accepts JSON. Authentication uses the apiKey body field. This endpoint does not use a Bearer header.
const response = await fetch("https://waitlyze.falakgala.dev/api/waitlist", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
apiKey: process.env.WAITLYZE_API_KEY,
waitlistId: "YOUR_WAITLIST_ID",
email: "person@example.com",
// referralCode: "OPTIONAL_REFERRAL_CODE"
})
});
const result = await response.json();
if (!response.ok) throw new Error(result.error || "Signup failed");Prop
Type
Handle responses
{ "success": true, "message": "Successfully joined the waitlist!", "data": { "rank": 9 } }| Status | Meaning | Fix |
|---|---|---|
400 | Missing or invalid input | Validate email, IDs, and JSON shape. |
401 | Bad key, expiry, or wrong linked waitlist | Check API keys and waitlistId. |
409 | Duplicate email, or not accepting signups | Distinguish duplicate from draft/paused state. |
429 | Rate limited | Wait for Retry-After; back off, do not loop. |
503 | Rate-limit service unavailable | Retry after the provided interval. |
500 | Temporary server failure | Retry with exponential backoff. |
New API signups follow the same verification flow: they receive a 24-hour confirmation link and stay unverified until they click it.
Dashboard routes need a session, not a signup key
/api/v1/api-keys and /api/v1/waitlists are browser-session routes. A waitlist:write signup key cannot manage keys, list subscribers, or access them.