Skip to main content
POST
Create Wallet

Authorizations

x-juno-jwt
string
header
required

JWT issued by Dynamic Labs or Privy. Sent in the x-juno-jwt header on every authenticated request.

Headers

x-juno-orgid
string | null

Tenant org ID for multi-tenant auth

x-sumvin-token
string | null
x-sumvin-pat
string | null
x-juno-jwt
string | null
X-Timestamp-Format
string

Controls how timestamp fields are serialized in JSON response bodies.

Default (header omitted or any other value): epoch milliseconds as integers. iso8601: UTC ISO 8601 strings of the form YYYY-MM-DDTHH:MM:SSZ.

Example: with X-Timestamp-Format: iso8601, the field value 1704067200000 becomes "2024-01-01T00:00:00Z".

Affected fields (recursively, in dicts and arrays): any field whose name ends in _at, plus the literal field names timestamp, period_start, and period_end. All other fields are passed through unchanged.

Only iso8601 is recognized. Any other value (or omitting the header) yields the default epoch-ms representation; the server does not reject unknown values, so this is documented as an example rather than an enum to keep generated clients permissive.

Example:

"iso8601"

Body

application/json
method
string
required
Allowed value: "dynamic"
credential_id
string
required

Dynamic Labs verified credential ID

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9_-]+$
chain_id
enum<integer>
required

Chain on which the wallet operates. Sei mainnet (1329) in production; Sei testnet (1328) in non-production.

Available options:
1329,
1328
Example:

1329

nickname
string | null
Maximum string length: 100

Response

Wallet created successfully

HAL-style hypermedia links for navigation.

id
string
required

Public wallet identifier.

address
string
required

Wallet address (EOA or Safe).

chain_id
integer
required

Blockchain chain ID where this wallet exists. Must be 1329 (Sei mainnet).

is_primary
boolean
required

True if this is the user's primary wallet for this type.

is_eoa
boolean
required

True for EOA (Externally Owned Account), false for Safe smart wallet.

created_at
integer
required

Wallet creation timestamp (epoch milliseconds).

signer_role
enum<string> | null

Set when this address is registered as a signer on the account's Safe rather than being a wallet the account holder transacts from. Absent on an ordinary wallet, and absent on a wallet that predates the field.

Available options:
cli_mandate_key
signer_status
enum<string> | null

How far the signer registration has got. pending while the owner addition is in flight, active once the address has been confirmed in the Safe's owner set on chain, failed if it terminally did not land. active and failed are the only settled values — poll until one of them appears. Absent on a wallet that is not a registered signer.

Available options:
pending,
active,
failed
signer_error_code
string | null

Why the registration failed, as the same error code the API returns elsewhere. Present only alongside signer_status: failed.

signer_error_reason
string | null

Human-readable detail for a failed registration. Present only alongside signer_status: failed.

nickname
string | null

User-defined friendly name for the wallet.

logo_uri
string | null

URI to the blockchain's logo image.

deleted_at
integer | null

Soft deletion timestamp (epoch milliseconds).

safe_creation_event_id
string | null

Event ID for tracking Safe creation. Only present in 202 Accepted responses when Safe creation is triggered.

cards
CardData · object[] | null

Linked payment cards. Only included when expand=cards is specified.