Skip to content

Create a new account

POST
/v1/auth/register
curl --request POST \
--url https://api.aetherpush.com/v1/auth/register \
--header 'Content-Type: application/json' \
--data '{ "email": "adrian@aetherpush.com", "password": "correct horse battery staple", "name": "Adrian Moreno" }'

Registers a new account with email and password. Provisions a new tenant for the account. Sends a verification email; the account cannot log in until the email is verified.

Rate limited to 5 registration attempts per IP per 60 minutes.

Media typeapplication/json
object
email
required
string format: email
password
required

Plain-text password. Server-side strength validation rejects weak passwords with 400 and a structured PasswordErrorList.

string format: password
>= 12 characters
name
string
<= 255 characters
Example
{
"email": "adrian@aetherpush.com",
"password": "correct horse battery staple",
"name": "Adrian Moreno"
}

Account created. Verification email dispatched (or queued for resend if delivery failed).

Media typeapplication/json
object
message
required
string
accountId
required
string format: uuid
tenantId
required
string format: uuid
emailSent
required

False if the account was created but the verification email could not be dispatched. Clients should prompt the user to request a new verification email via /v1/auth/resend-verification.

boolean
Example
{
"message": "Account created. Please check your email to verify your account.",
"accountId": "5b3f1c8a-4d2e-4a7c-9a1b-8e6f3c2d1b0a",
"tenantId": "7c4a2b1d-3e5f-4b6c-8d7e-9f0a1b2c3d4e",
"emailSent": true
}

Missing fields, a name longer than 255 characters, a value too long for a column, or a weak password.

Media typeapplication/json
One of:
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Examples

Missing email or password

{
"error": "Email and password are required.",
"requestId": "req_abc123"
}

An account with this email already exists.

Media typeapplication/json
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Example
{
"error": "An account with this email already exists.",
"requestId": "req_abc123"
}

Too many registration attempts from this IP.

Media typeapplication/json

Returned with HTTP 429 when an endpoint-specific rate limit is hit. retryAfterSeconds indicates how long the client should wait before retrying.

object
error
required
string
retryAfterSeconds
integer
>= 1
requestId
string
Example
{
"error": "Too many registration attempts. Please try again later.",
"retryAfterSeconds": 3600,
"requestId": "req_abc123"
}

Internal server error.

Media typeapplication/json
object
error
required

Human-readable error message.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string
Example
{
"error": "The requested resource was not found.",
"requestId": "req_abc123"
}