OUTCOME · Create or advance
What changes
Creates an inactive Identity account, password verifier, versioned terms-acceptance record, and encrypted 24-hour activation delivery. It does not create an authenticated session.
v2Authentication
/api/v2/registrationsPURPOSE + BUSINESS CONTEXT
WHEN THIS CALL IS USEFUL
Use for first-party personal or corporate account creation after the application has resolved the tenant brand, current legal terms, and the correct account type.
OUTCOME · Create or advance
Creates an inactive Identity account, password verifier, versioned terms-acceptance record, and encrypted 24-hour activation delivery. It does not create an authenticated session.
WHY IT MATTERS
ISOLATION + AUTHORITY
Tenant identity, profile, password, authenticator enrollment, recovery code, device, session, access token, refresh credential, step-up grant, and account-closure state remain distinct. Authentication proves only the admitted session and scopes; it grants no workspace role, wallet, payment, settlement, publisher, matching, or trading authority.
BEFORE YOU CALL
WHAT TO DO NEXT
AGENT GUIDANCE
The exact deployed parameters, schemas, responses, security requirements, and Hybrid-Chain agent metadata are authoritative at this operation's production OpenAPI JSON Pointer. The readable tables below add integration guidance; the deployed OpenAPI controls if guidance and the machine contract ever differ.
Open the authoritative production contract ↗EXTENDED INTEGRATION GUIDANCE
Examples illustrate integration intent; the referenced OpenAPI operation and component schemas define the executable shape.
PARAMETERS
tenant_uuidbodyOptionaltenant identifier · 1–128Tenant or white-label registration boundary; omission selects global.
account_typebodyRequiredpersonal | corporateControls conditional identity fields: personal requires first_name and last_name; corporate requires company_name.
emailbodyRequiredemail address · max 128Normalized login and activation-delivery address.
passwordbodyRequiredprintable string · 12–128Must use at least three character classes and must not contain an email local part of four or more characters.
company_namebodyOptionalstring · 1–160Required for corporate accounts; not used for personal accounts.
first_namebodyOptionalstring · 1–100Required for personal accounts.
middle_namebodyOptionalstring · max 100Optional personal middle name.
last_namebodyOptionalstring · 1–100Required for personal accounts.
terms.acceptedbodyRequiredtrueExplicit acceptance; false or omission is rejected.
terms.versionbodyRequiredpublished version · max 64Exact current terms version accepted by the registrant.
terms.privacy_policy_versionbodyOptionalpublished version · max 64Exact privacy-policy version when published separately.
REQUEST
{
"tenant_uuid": "global",
"account_type": "personal",
"email": "[email protected]",
"password": "Correct-Horse#2048",
"first_name": "Ada",
"last_name": "Lovelace",
"terms": {
"accepted": true,
"version": "2026-08",
"privacy_policy_version": "2026-08"
}
}STABLE ERROR CODES
These codes are published by the authoritative gateway contract for this endpoint. Treat message as safe diagnostic text; integrations should branch on code and HTTP status.
invalid_jsonThe JSON body is malformed or fails the published account schema.invalid_security_requestThe account lifecycle request is invalid.missing_idempotency_keyA nonempty Idempotency-Key is required for this mutation.invalid_credentialsThe bearer, password, activation, or reset credential is invalid.step_up_requiredFresh purpose-bound authenticator verification is required.account_closure_not_foundThe account closure request was not found.security_conflictThe requested account transition conflicts with current security state.account_closure_conflictThe account closure transition conflicts with current lifecycle state.identity_security_unavailableThe authoritative Identity security service is temporarily unavailable.RESPONSES
{
"registration_id": "f8317aef81764e1f923037c1b76df8de",
"client_id": "hcu_…",
"tenant_uuid": "global",
"status": "PENDING_ACTIVATION",
"activation_delivery": "email",
"activation_expires_at": "2026-09-02T12:00:00Z"
}{
"code": "invalid_security_request",
"message": "The account shape, conditional fields, password, or terms acceptance is invalid."
}invalid_security_request{
"code": "step_up_required",
"message": "Registration is not available for the selected tenant."
}step_up_required{
"code": "security_conflict",
"message": "An active or trashed account already exists for this email and tenant."
}security_conflict{
"code": "identity_security_unavailable",
"message": "Identity or encrypted activation delivery is unavailable."
}identity_security_unavailableOPERATIONAL NOTES
UPGRADING FROM V1
If you maintain an older integration, use this map to find the V2 replacement. Do not translate the old request field-for-field: rebuild it from the V2 parameters and schemas above because identity, authorization, replay protection, and response semantics may have changed.
/api/v1/auth/registrationAUTH: Register a Private UserThis route is implemented in canonical gateway source and appears in the production OpenAPI snapshot observed 2026-09-11T06:35:11.572Z. Authentication, tenant, feature, venue, and market policy still apply.
Verify the exact production OpenAPI operation ↗Return to the V2 directory ↗