Website API
The website waitlist form has been removed. Download for Mac instead. The legacy waitlist API contract remains documented here. Discover it through the API catalog or read the OpenAPI specification.
Legacy waitlist endpoint
POST https://novelthread.app/public/v1/waitlist
The former website waitlist form is no longer available. The legacy submission contract requires a same-origin browser request, Content-Type: application/json, and a valid Cloudflare Turnstile token for the website hostname and action waitlist. Agents can discover this contract, but registration still requires the website's verification flow.
The user must explicitly accept the waitlist privacy terms. Do not fabricate consent or Turnstile tokens. There is no API key or unattended registration flow for this endpoint.
Request body
This example shows the required fields. The token placeholder must be replaced with a token from the website verification flow.
{
"email": "writer@example.com",
"consent": true,
"policyVersion": "waitlist-2026-09-05",
"turnstileToken": "REPLACE_WITH_TOKEN_FROM_WEBSITE"
}Optional fields are reason (up to 1,000 characters) and workField (up to 120 characters). Omit website or leave it empty; it is an anti-spam field. Unrecognized fields are rejected. The full JSON body must fit within 16 KiB.
Responses and retries
Responses have no body. Repeated submissions for the same email do not overwrite its original entry. The response does not reveal whether an email was already registered.
202- Accepted, already registered, or silently discarded by the anti-spam honeypot. Empty body; does not disclose whether an email is registered.
400- Malformed JSON, invalid fields, missing consent, or outdated policy version.
403- Origin, client IP, or Turnstile verification failed.
405- Method not allowed. Use POST.
410- The waitlist is closed.
413- Request body exceeds 16 KiB.
415- Content-Type must be application/json.
429- Too many attempts. Retry after 60 seconds.
503- Configuration, verification, or storage is temporarily unavailable.
The endpoint allows five attempts per minute per IP. On 429, respect the Retry-After: 60 header. If verification expires, return to the form to obtain a fresh token. A 410 response means the waitlist is closed.
Discovery
GET /.well-known/api-catalog returns application/linkset+json. GET and HEAD responses include a Link header with rel="api-catalog", following RFC 9727. Catalog and specification reads require no login and remain available when the waitlist is closed.
This catalog covers the public website API. It does not grant access to private desktop, console, billing, or administration services. See the privacy policy for how waitlist information is handled.