Account

Admin: list accounts (paginated)

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
pagenumberOptional

Page number (default: 1)

Example: 1
pageSizenumberOptional

Number of items per page (default: 10)

Example: 10
sortstringOptional

Sort field and order. Use - prefix for descending. Example: -createdAt, createdAt

Example: -createdAt
selectstringOptional

Fields to select (comma separated). Use + prefix to include hidden fields. Example: name,status,+holders

populatestringOptional

Relations to populate (comma separated). Example: wallet,token

Responses
200Success

No content

get
/api/account
200Success

No content

get
Responses
200Success

No content

get
/api/account/me
200Success

No content

Change password step 1 — get current password challenge

post

Returns sessionId, salt, and serverPublic (B) to begin SRP proof of the existing password.

Responses
200

Returns sessionId, salt, and serverPublic (B)

No content

post
/api/account/srp/change-password/init
200

Returns sessionId, salt, and serverPublic (B)

No content

Change password step 2 — verify old password and set new credentials

post

Client proves knowledge of the old password via M1, then submits new salt, verifier, and encrypted blob atomically.

Body
sessionIdstringRequired

Session ID returned by POST /auth/srp/change-password/init

clientPublicstringRequired

Client ephemeral public key A = g^a mod N (base64)

clientProofstringRequired

Client proof M1 = H(H(N)⊕H(g) || H(I) || salt || A || B || K) (base64)

newSrpSaltstringRequired

New SRP salt generated client-side (base64, 32 bytes)

newSrpVerifierstringRequired

New SRP verifier v = g^x mod N (base64)

newEncryptedBlobstringRequired

Keystore blob re-encrypted with new derived key (base64, max 13708 chars)

newPasswordHintstringOptional

New password hint

Responses
200

Password changed — returns serverProof (M2) for client verification

No content

post
/api/account/srp/change-password/verify
200

Password changed — returns serverProof (M2) for client verification

No content

Set up TOTP 2FA — generate a new secret and return the otpauth URI

post
Responses
200

Returns otpauthUri for QR code rendering

No content

post
/api/account/2fa/setup
200

Returns otpauthUri for QR code rendering

No content

Enable or disable TOTP 2FA — requires a valid OTP code

post
Body
objectOptional
Responses
200

2FA state toggled

No content

post
/api/account/2fa/toggle

No content

Set an inscription as the account avatar

patch
Body
inscriptionIdstring · nullableOptional

The inscriptionId to set as avatar. Pass null or omit to remove the avatar.

Responses
200

Avatar updated

No content

patch
/api/account/avatar

No content

Remove a default token for a slot

delete
Body
slotstring · enumRequiredPossible values:
tokenIdstringRequired
Responses
200

Default token removed successfully

No content

delete
/api/account/default-token

No content

Set a default token for a slot

patch
Body
slotstring · enumRequiredPossible values:
tokenIdstringRequired
Responses
200

Default token set successfully

No content

patch
/api/account/default-token

No content

Initiate email change — send verification link to new address

post

Queues a verification email to the new address and a notice to the current address. Returns { srpSession } for SRP accounts or { webauthnChallenge } for passkey accounts — only one field is present at a time.

Body
newEmailstringRequired

New email address to associate with the account

Responses
200

Returns srpSession (SRP accounts) or webauthnChallenge (passkey accounts)

No content

post
/api/account/change-email/init

No content

Confirm email change using verification token

post

Finalises the email update. SRP accounts: srpSessionId, clientPublic, clientProof, and newSrpVerifier are conditionally required. srpSession from the init response provides sessionId, salt, and serverPublic. Passkey accounts: credentialId, challengeId, and webauthnAssertion are conditionally required. webauthnChallenge from the init response provides challengeId and challenge.

Body
tokenstringRequired

Verification token from the change-email email link

emailstringRequired

New email address being verified (cross-verified against the token)

Responses
200

Email updated successfully

No content

post
/api/account/change-email/verify

No content

Last updated