Sign people up with the JSON API
Send signups from your own code and get the token for follow-up questions back.
Your own form, app or flow can sign people up with a POST and Accept: application/json:
const res = await fetch('https://api.waitlark.com/v1/p/pk_yourproject/join', {
method: 'POST',
body: new FormData(form), // email, lang, your questions, cf-turnstile-response
headers: { Accept: 'application/json' },
});
const out = await res.json(); // { ok: true, token: "…", position: 142 }
Requests are only accepted from the sites on your project's list, and need the bot check token.
The reply
ok: truewith atokenand aposition. A second signup with the same address gets a reply that looks exactly the same.ok: falsewith anerrorcode. See Error codes.
Follow-up questions
Use the token to save answers to the questions you ask after signup:
await fetch('https://api.waitlark.com/v1/p/pk_yourproject/profile', {
method: 'POST',
body: new URLSearchParams({ token, monthly_orders: '100_1k' }),
headers: { Accept: 'application/json' },
});
- Send only the questions that were answered; others stay as they were.
- Send a question with an empty value to clear an earlier answer.
- Answers can be changed for seven days after signup.
- The reply is always
{ "ok": true }, so a wrong token can't be used to find out anything.
Limits
- 20 requests a minute per visitor and project.
- A request body of at most 32 KB, with a
Content-Lengthheader (browsers always send one).
Updated 19 October 2026