Skip to content

Register

POST
/api/auth/register
curl --request POST \
--url https://example.com/api/auth/register \
--header 'Content-Type: application/json' \
--data '{ "accept_terms": false, "business_use": false, "email": "hello@example.com", "full_name": "example", "organization_name": "example", "password": "example", "signup_intent": "mcu", "username": "example" }'

Register a new user account.

Gated by settings.allow_registration. When False (the default in staging/production), public self-signup is closed — only the seeded admin can create additional users via the admin API.

Does NOT issue a session — the account is unverified until the emailed link is confirmed (POST /auth/verify-email), and login is blocked until then. Immediately logging in an unverified user would just recreate the same confusing half-state this gate exists to avoid.

Media type application/json
RegisterRequest

User registration request

object
accept_terms
Accept Terms
boolean
business_use
Business Use
boolean
email
required
Email
string format: email
full_name
Any of:
string
<= 255 characters
organization_name
Any of:
string
<= 255 characters
password
required
Password
string
>= 8 characters <= 128 characters
signup_intent
Any of:
string
Allowed value: mcu
username
required
Username
string
>= 3 characters <= 50 characters /^[a-zA-Z0-9_-]+$/

Successful Response

Media type application/json
Example generated
example

Validation Error

Media type application/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Example generated
{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}