Turnstile and BYOD
Manage custom Cloudflare Turnstile keys and connect your own Postgres or MySQL database over the API.
Two per-waitlist integrations round out full API control: custom Cloudflare Turnstile keys (spam protection on custom domains) and bring-your-own-database (signups stored in your own Postgres or MySQL).
Custom Turnstile keys
On a custom domain, UseWait’s own Turnstile keys cannot serve the widget, so you bring your own from the Cloudflare dashboard. Requires a plan with the custom-domain capability.
curl https://usewait.com/api/v1/waitlists/acme-robotics/turnstile \
-H "Authorization: Bearer uw_live_YOUR_KEY"curl -X PUT https://usewait.com/api/v1/waitlists/acme-robotics/turnstile \
-H "Authorization: Bearer uw_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "siteKey": "0x4AAA...", "secretKey": "0x4AAB..." }'curl -X DELETE https://usewait.com/api/v1/waitlists/acme-robotics/turnstile \
-H "Authorization: Bearer uw_live_YOUR_KEY"PUTis partial: omit a field to leave it unchanged, passnullto clear just that field. You can rotate the secret without re-entering the site key.- Secrets are never returned. Status responses only expose
hasCustomSiteKey/hasCustomSecretKeybooleans.
Bring your own database
Store signups in your own Postgres or MySQL instead of (from that point on) the internal database. Requires a plan with the database capability. Setup creates a table named waitlist_<slug> (hyphens become underscores) with columns id, email, name, position, referral_code, referred_by, metadata, created_at.
Test the connection
curl -X POST https://usewait.com/api/v1/waitlists/acme-robotics/database \
-H "Authorization: Bearer uw_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"dbType": "postgres",
"connectionString": "postgres://user:pass@host:5432/db",
"testOnly": true
}'Run the setup
Same request without testOnly. On success the table is created and the connection persisted; new signups land in your database.
Detach when needed
curl -X DELETE https://usewait.com/api/v1/waitlists/acme-robotics/database \
-H "Authorization: Bearer uw_live_YOUR_KEY"Future signups return to the internal database. Rows already in your database stay yours.
GET on the same path reports the current state: dbType (internal, postgres, or mysql), whether a connection string is stored, and the table name.
White-label
White-label has no endpoint because it is a plan capability, not a setting: accounts with it may simply omit the “Made with UseWait” branding from their page code. Check it via GET /api/v1/me under capabilities.whiteLabel.