Skip to content

Waitlist API

The Lucerna Waitlist API lets your own application capture waitlist signups, read the queue, and redeem invite codes, without a dashboard user in the loop — enough to run a waitlist entirely headless. It is a small, JSON-over-HTTPS REST API — you can call it from any language with curl and a couple of lines of code.

This is the one Lucerna surface with no SDK to install, by design. Every example in these docs is either raw curl or plain fetch against the endpoints.

Base URL

All requests go to:

https://api.uselucerna.app

Every public endpoint lives under the /sdk/v1/waitlist prefix.

What you can do

EndpointAuthPurpose
POST /sdk/v1/waitlist/signupServer keyAdd up to 100 signups to a waitlist
GET /sdk/v1/waitlist/{waitlistId}/entriesServer keyPage through a waitlist's entries
GET /sdk/v1/waitlist/{waitlistId}/entries/{email}Server keyLook up one entry — position, referrals, status
POST /sdk/v1/waitlist/webhooks/verifyNoneVerify a webhook delivery's signature
GET /sdk/v1/waitlist/invites/{code}NoneCheck whether an invite code is live
POST /sdk/v1/waitlist/invites/{code}/acceptNoneRedeem an invite code

The signup and entry endpoints are server-to-server and require a secret server key (reads need the waitlist:read grant; product keys have it built in). The invite endpoints operate on a single-use code and are public — safe to call from a browser-side join page.

Signup PII — the email, the phone number and every metadata field — is encrypted at rest; the API decrypts it only to serve your authenticated reads, lifecycle emails, and webhook payloads.

Dashboard-only routes

Everything else — analytics, sending invites, editing templates — lives on the admin API used by the Lucerna dashboard and is not part of this public surface.

Conventions

  • Requests and responses are always JSON. Send Content-Type: application/json on any request with a body.
  • All IDs in this API are the short waitlist id shown in the dashboard (e.g. wl_launch), not an internal database id.
  • Errors share one shape: { "code": "...", "message": "..." }. See Errors.

Next: Quickstart →

Lucerna Developer Docs