Skip to main content
POST
Admit wallet

Authorizations

Authorization
string
header
required

Partner server key (tpk_...), issued by Totalis to a registered partner. It calls only POST /v1/partner/wallet-admissions, from the partner's server with no Origin; it cannot act for an account. Never ship it to a browser: pages use the publishable browser key (X-Totalis-Partner: tpb_...), which labels traffic but authorizes nothing.

Headers

Idempotency-Key
string<uuid>
required

Lowercase UUIDv7 naming this command, unique per caller and route. A retry with the same key and body returns the original result; the same key with a different body returns 409 IDEMPOTENCY_KEY_REUSED.

Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

Body

application/json
address
string<eip55-address>
required

The wallet that may create its account at its next sign-in.

Pattern: ^0x[0-9a-fA-F]{40}$

The wallet's consent to this partner: its personal_sign of the exact message whose lines are Allow <slug> to open a Totalis account for this wallet., This does not authorize a financial action., an empty line, Wallet: <lowercase address>, Partner: <slug>, Environment: <development|staging|production>, Chain ID: <chain> and Expires At: <expires_at>, joined by newlines. The SDK builds it (admissionConsentMessage).

Response

The wallet is admitted. Admitting it again returns the same admitted_at, so retries are safe; any Idempotency-Key works because admission is idempotent by wallet.

address
string
required

The admitted wallet, lowercase.

Pattern: ^0x[0-9a-f]{40}$
admitted_at
string<date-time>
required

When the partner first admitted the wallet; the same on every retry.

Maximum string length: 30
Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,9})?Z$