For developers

How to create a developers waitlist

A table, a unique index on email, and a counter that races under load. A captcha you bolt on after the first bot run. A CSV export marketing asks for on Friday. Unwaited is that code, done once, behind a JSON endpoint.

Every waitlist you build is the same 400 lines nobody wants to own. 6 steps, about five minutes, or one click with the recipe below.

Step by step

Set up the API preview yourself

These are the exact values the recipe applies. Change any of them to match your line.

  1. Create the waitlist

    Sign in, click New waitlist, and name it "API preview". It starts as a draft, so nothing is public until you publish.

  2. Leave capacity unlimited

    In Settings, leave the capacity empty. Everyone who joins gets a number in order and the list never reads as full.

  3. Leave the hours open

    Under Hours, leave the schedule off so people can join at any time. You can pause the list by hand whenever you need to.

  4. Add the form fields

    Email is built in. On the Form tab, add Stack, GitHub handle. Labels and help text render as plain text.

  5. Show the counter

    In Settings, turn on the counter so the form shows how many spots are left. People join faster when they can see the number.

  6. Publish and share

    Click Publish. The Share tab has the hosted link, a QR code, and the script tag or iframe for your site. The submit button reads "Request an API key".

Or do it in one click

Use the recipe

The "API preview" recipe creates the waitlist with every step above already done. Sign in, click once, and it is live as a draft you can publish.

Recipe

API preview

  • Unlimited
  • Open any time
  • 3 fields
  • No cap. The list stays open until you pause it.
  • No opening hours.
  • Asks for stack and GitHub handle, both optional.
  • The position is returned in the API response and shown on the success screen.
  • The running count is shown on the form and returned by the API.

After you publish

How the list runs

POST JSON

Field keys are yours. Numbers can arrive as strings, checkboxes as "on". We coerce like a browser would.

Get a position back

201 with position, or 200 already_joined with the existing one. Full, paused, and closed are explicit codes.

API keys skip the captcha

Server-to-server calls use a Bearer key. Browser calls send a captcha token.

Signed webhooks

On Pro, HMAC-SHA256 over a timestamp and the raw body. Retries with backoff, redeliver from the dashboard.

Fetch the form definition

GET the schema and theme and render it yourself, or hydrate a native form.

Plain HTML fallback

A form with action set to the endpoint works with no JavaScript. It redirects back with the result.

FAQ

Questions people here ask

Is there a client library?

Not yet. The endpoint is a single JSON POST. A fetch call is shorter than a library import.

What are the rate limits?

10 submits per minute per IP per waitlist and 120 per minute per waitlist. 429 comes with Retry-After.

Can I self-host?

No. The value is the hosted endpoint, the notifications, and the dashboard.

Does it email the people who join?

Yes: a confirmation with their number and a status link, which you can turn off per waitlist. For anything else, use the webhook to trigger your own email from Resend, Postmark, or whatever you already run.

Five minutes by hand, or one click.

Free for 100 signups a month. Unlimited waitlists. Every setting above stays editable.

Create this waitlist