Accept an invitation (create account or join with existing session)
Public token route, IP rate limited (429). If the invited email already has an account, the caller MUST already be logged in as that exact account (else 401 requiresLogin / 403 mismatch). If no account exists, a password (min 8) in the body creates the account and logs in (Set-Cookie). systemRole is always USER — never read from the body.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Body
Section titled “Request Body”Required only for the no-existing-account path.
object
Required only when no account exists for the invited email
Examplegenerated
{ "password": "example"}Responses
Section titled “Responses”Accepted (existing-account path)
object
Password too short (no-account path)
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Must log in as the invited account first
object
Example
{ "requiresLogin": true}Logged-in account email does not match invite
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Invitation not found
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Invitation used/revoked
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Invitation expired
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Rate limited
object
Examplegenerated
{ "error": "example", "retryAfterSeconds": 1}Session secret missing / create failed
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}