---
title: "RegisterInterest"
method: POST
path: "/api/leads/v1/register-interest"
tags: ["LeadsService"]
---

# RegisterInterest

`POST /api/leads/v1/register-interest`

## Request

- Base URL: `https://api.worldmonitor.app`
- URL: `https://api.worldmonitor.app/api/leads/v1/register-interest`
- Auth: none required

RegisterInterest adds an email to the Pro waitlist and sends a confirmation email. Turnstile-gated (desktop sources authenticate a bypass with a shared-secret HMAC instead). A failed Cloudflare Turnstile check returns 403 Bot verification failed; a desktop-source request with a missing or invalid HMAC signature returns 403 Desktop authentication failed.

## Headers

- `Idempotency-Key` string

## Request body

- WorldmonitorLeadsV1RegisterInterestRequest: RegisterInterestRequest carries a Pro-waitlist signup.
  - `email` string, required
  - `source` string
  - `appVersion` string
  - `referredBy` string
  - `website` string: Honeypot — bots auto-fill this hidden field; real submissions leave it empty.
  - `turnstileToken` string, required: Cloudflare Turnstile token. Desktop sources bypass Turnstile; see handler.

## Response `200`

OK

- WorldmonitorLeadsV1RegisterInterestResponse: RegisterInterestResponse mirrors the Convex registerInterest:register return shape.
  - `status` string: "registered" for a new signup; "already_registered" for a returning email.
  - `referralCode` string: Stable referral code for this email.
  - `referralCount` integer: Number of signups credited to this email.
  - `position` integer: Waitlist position at registration time. Present only when status == "registered".
  - `emailSuppressed` boolean: True when the email is on the suppression list (prior bounce) and no confirmation was sent.

## Other responses

- `400`: Validation error, invalid Idempotency-Key header, or malformed JSON request body
- `403`: Bot verification or desktop authentication failed.
- `409`: A request with this Idempotency-Key is still being processed
- `422`: The Idempotency-Key was already used with a different request body
- `429`: Rate limit exceeded.
- `default`: Gateway or handler error response.

---

[API](https://skmtc.dev/worldmonitor/apis/worldmonitor-api.md) · [All operations](https://skmtc.dev/worldmonitor/apis/worldmonitor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/worldmonitor/apis/worldmonitor-api/revisions/e3dc8463a5c9?raw)
