Skip to content

Self-serve register (email + password)

Public. Responses are byte-identical regardless of whether the email already exists (enumeration-safe): a valid request always returns 202 pendingVerification. The only non-202 branches are 400 (bad format), 429 (rate limit), and 503 (system email globally undeliverable — fail-closed, no account created). Password min length 8.

Media typeapplication/json
object
email
required
string format: email
password
required
string
>= 8 characters
Examplegenerated
json
{
"email": "hello@example.com",
"password": "example"
}

Verification pending (uniform response)

Media typeapplication/json
object
ok
boolean
pendingVerification
boolean

Invalid email or password format

Media typeapplication/json
object
error
required

Human-readable error message.

string
message
string
Examplegenerated
json
{
"error": "example",
"message": "example"
}

Rate limited

Media typeapplication/json
object
error
required
string
retryAfterSeconds
integer
Examplegenerated
json
{
"error": "example",
"retryAfterSeconds": 1
}

Self-serve signup unavailable (system email undeliverable)

Media typeapplication/json
object
ok
boolean
error
string
Allowed value: self_serve_signup_unavailable
Example
json
{
"ok": false,
"error": "self_serve_signup_unavailable"
}