Skip to main content
POST
Create deposit

Authorizations

Authorization
string
header
required

Wallet session: the access_token from POST /v1/auth/wallet-sessions, for a user who brings their own wallet to a partner's web page. It acts for that wallet's account with no scope limit, and is bound to the Origin it signed in from: send exactly one Origin header with that value, or the request is ORIGIN_REQUIRED or UNAUTHENTICATED. It lasts at most 30 days and ends after 7 idle days or at DELETE /v1/auth/wallet-sessions/current.

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
schema_version
any
required

Envelope format version; always 1.

request_id
string<uuid>
required

Client-generated UUIDv7 for this request, echoed back in error responses.

Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
sent_at
string<date-time>
required

RFC 3339 UTC time the client sent the request, ending in Z, e.g. 2026-09-26T14:30:00Z.

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$
command
object
required

Signed EIP-3009 authorization that moves USDC from the account wallet into the vault; Totalis relays it and pays gas.

Response

Admitted, not yet on chain. Follow the operation on the account stream or with GET /v1/me/operations/{operation_id}; the vault balance changes when it commits. A retry with the same Idempotency-Key and body returns the same operation. An account gets at most 5 deposits an hour.

operation_id
string
required

ID of the queued deposit operation; follow it with GET /v1/me/operations/{operation_id}.

Pattern: ^0x[0-9a-f]{64}$
state
any
required

Always DURABLE: the deposit is recorded and queued, not yet executed on chain.

amount
string<uint128-decimal>
required

Deposit amount in atomic USDC (6 decimals), the authorization value.

Maximum string length: 39
Pattern: ^(0|[1-9][0-9]*)$