Create a user

View as MarkdownOpen in Claude
Creates the user and derives **one wallet per configured chain** from a single bip39 mnemonic, atomically. ⚠️ **The `mnemonic` is returned exactly once and is never stored in plaintext.** Persist it before you discard the response — `/seed` export is permanently disabled. The `password` (minimum 8 characters) encrypts the keystore entries with AES-256-GCM. It is unrecoverable and is required by `/send` and `/extend`. Only chains the deployment is configured for are created, so a partial address map is normal in development. Chains configured later are backfilled with `/extend`.

Authentication

AuthorizationBearer

A 15-minute token from /auth. Required on every endpoint except /auth.

Headers

X-Request-IdstringOptional
Correlation id. Generated if omitted, echoed on every response, and written to the audit log.
X-USER-IDstringOptionalformat: "^[0-9a-fA-F]{24}$"

Sent by the trusted gateway. When present it overrides any userId in the body.

Request

This endpoint expects an object.
passwordstringRequired>=8 characters

Keystore password (AES-256-GCM, scrypt KDF). Unrecoverable — required by /send and /extend.

existingSeedstringOptional

bip39 seed phrase, validated with bip39.validateMnemonic.

Response

OK
resultobject
requestIdstring

Echo of the inbound X-Request-Id, or a generated one.

Errors

400
Bad Request Error
401
Unauthorized Error
409
Conflict Error
503
Service Unavailable Error