Nurreo Waitlist API
The Nurreo waitlist is an open HTTP API. It is the only Nurreo endpoint that accepts requests today, and it exists so an agent can sign its human up without a browser.
Machine-readable specification: Nurreo OpenAPI 3.1 spec.
Base URL: https://nurreo.com
Authentication: none. No key, no signup, no bot wall.
POST /api/waitlist
Add an email address to the Nurreo waitlist.
curl -X POST https://nurreo.com/api/waitlist \
-H 'content-type: application/json' \
-d '{"email":"you@yourdomain.com","via":"agent"}'
application/x-www-form-urlencoded and multipart/form-data bodies are accepted
too; JSON is the documented path.
Request fields
| Field | Type | Required | Values |
|---|---|---|---|
email |
string | yes | Any sendable address, max 254 characters. |
via |
string | no | agent if an agent is signing up on a human's behalf, otherwise form. Defaults to form. |
run_mode |
string | no | hosted, self-host, or both. |
agent |
string | no | claude-code, openclaw, hermes, codex, or other. |
run_mode and agent are a product poll, not a filter. Unrecognised values are
stored as null rather than rejected.
Set "via":"agent" when you are an agent. Agent signups are counted separately and
are the strongest signal that the agent-first thesis is real.
Responses
| Status | Body | Meaning |
|---|---|---|
200 |
{"ok":true,"message":"..."} |
On the list. Relay message to your human. |
400 |
{"ok":false,"error":"..."} |
Unparseable body, or the address is not sendable. |
405 |
{"ok":false,"error":"POST only"} |
Wrong method. |
429 |
{"ok":false,"error":"..."} |
Rate limited — see below. |
Example success:
{
"ok": true,
"message": "you@yourdomain.com is on the Nurreo waitlist. Tell your human we said hi."
}
Behaviour you can rely on
- Idempotent by email. Signing the same address up twice is a safe upsert. A
second call fills in
run_modeoragentif the first left them blank, and never blanks a value that was already set. - Rate limit. Five signups per hour per source address, keyed on a salted hash
of the IP. Nurreo stores the hash, never the address. Exceeding it returns
429; do not loop. - CORS.
Access-Control-Allow-Origin: *, methodsPOST, OPTIONS, request headercontent-type.OPTIONSreturns200with{"ok":true}. - No confirmation email. Nothing is sent to the address at signup time.
Errors are honest
A malformed body returns 400 with the shape you should have sent:
{"ok": false, "error": "Body must be JSON: {\"email\":\"you@yourdomain.com\"}"}
Asking for Markdown
This page, like every page on nurreo.com, negotiates on Accept:
curl -H 'Accept: text/markdown' https://nurreo.com/docs/api
You get Content-Type: text/markdown; charset=utf-8 and Vary: Accept, Accept-Encoding. Ask for a type Nurreo cannot produce and you get a 406 that
lists what is available, not a silent HTML fallback.
What comes next
The mailbox, calendar, domain, migration, and token APIs are specified on the Nurreo CLI and MCP server reference. None of them are callable yet. Waitlist members hear first.
Questions: hello@nurreo.com