Back to guides

API Reference

Integrate GetWaitly signups into your own forms. Works with any stack — no SDK required.

Endpoint

POST https://getwaitly.com/api/join

Request body

Send a JSON body with Content-Type: application/json.

FieldTypeRequired
emailstringrequired
slugstringrequired
namestringoptional
phonestringoptional
customFieldsRecord<string, string>optional
refstringoptional
sourcestringoptional
fingerprintstringoptional
utmSourcestringoptional
utmMediumstringoptional
utmCampaignstringoptional
utmContentstringoptional
utmTermstringoptional
referrerstringoptional

Responses

All responses return HTTP 200. Use the success and type fields to determine the outcome.

Confirmed

Signup succeeded. Use the returned position and referral link on your thank-you page.

{
  "success": true,
  "type": "confirmed",
  "position": 42,
  "referralCode": "abc123defg",
  "referralLink": "https://getwaitly.com/ref/abc123defg",
  "unsubscribeToken": "550e8400-..."
}

Pending confirmation

Email verification required. The visitor must click the link we email them before they count as confirmed.

{
  "success": true,
  "type": "pending_confirmation",
  "email": "visitor@example.com"
}

Blocked

The signup was accepted but fraud rules flagged it. Prevented from counting toward referrals or the public waitlist total.

{
  "success": true,
  "type": "confirmed",
  "position": 1,
  "referralCode": "",
  "referralLink": null,
  "unsubscribeToken": ""
}

Error

The signup was rejected. Check the error message for the reason.

{
  "success": false,
  "error": "You're already on this waitlist."
}

Common error messages

  • Invalid email address.
  • Waitlist not found.
  • This waitlist is paused.
  • You're already on this waitlist.
  • This waitlist is currently full.
  • Too many signups from this location. Please try again later.
  • Please use a valid email address. (disposable email)

Examples

cURL

curl -X POST https://getwaitly.com/api/join \
  -H "Content-Type: application/json" \
  -d '{
    "email": "visitor@example.com",
    "slug": "my-product",
    "name": "Alex",
    "source": "landing-page"
  }'

JavaScript (fetch)

const res = await fetch("https://getwaitly.com/api/join", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    email: "visitor@example.com",
    slug: "my-product",
    name: "Alex",
    source: "landing-page",
    ref: referralCode,
    referrer: document.referrer,
    utmSource: params.get("utm_source"),
    utmMedium: params.get("utm_medium"),
  }),
});

const data = await res.json();
if (data.success) {
  window.location.href = `/thank-you?token=${data.unsubscribeToken}`;
}

HTML form (your own site)

<form
  action="https://getwaitly.com/api/join"
  method="POST"
  onsubmit="handleSubmit(event)"
>
  <input type="hidden" name="slug" value="my-product" />
  <input type="hidden" name="source" value="landing-page" />
  <input type="email" name="email" required placeholder="Your email" />
  <input type="text" name="name" placeholder="Full name (optional)" />
  <button type="submit">Join the waitlist</button>
</form>

<script>
async function handleSubmit(e) {
  e.preventDefault();
  const form = e.target;
  const body = Object.fromEntries(new FormData(form));
  const res = await fetch("https://getwaitly.com/api/join", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(body),
  });
  const data = await res.json();
  if (data.success) {
    window.location.href = `/thanks?token=${data.unsubscribeToken}`;
  }
}
</script>

Rate limits

3 signups per IP address per waitlist per 24 hours. Beyond that, signups return the error Too many signups from this location. The IP is determined from the CF-Connecting-IP header (Cloudflare).

Referral tracking

Pass a refparameter with a subscriber's 10-character referral code. The new signup is attributed to that subscriber and they earn 10 points. Referral attribution is only enabled on paid plans (Starter and above).

You can get a subscriber's referral code from the thank-you page response (referralCode field) or from the status page. The referral link format is https://getwaitly.com/ref/{code} — visitors who click it get a cookie that carries the ref value automatically.