Skip to main content

Create Wallet

Create a new wallet with secure key custody.

Request Body

string
Human-readable label for the wallet (1-128 characters)
boolean
default:false
Automatically fund with devnet SOL (devnet only)
number
Amount to fund in lamports when autoFund is true (max: 10,000,000,000)

Response

string
required
Unique wallet identifier (UUID)
string
required
Base58-encoded Solana public key
enum
required
Signer backend: local-dev, local-memory, kms, hsm, mpc
enum
required
Wallet status: active or disabled
string
Wallet label
string
required
ISO 8601 timestamp
object
Key custody information

Example Response


Get Wallet

Retrieve wallet details by ID.
cURL

Path Parameters

string
required
Wallet UUID

Response

Returns the same structure as Create Wallet.

List Wallets

List all wallets for the current tenant.
cURL

Query Parameters

number
default:"50"
Maximum number of wallets to return (max: 100)
number
default:"0"
Number of wallets to skip

Response


Get Balance

Retrieve SOL balance for a wallet.
cURL

Path Parameters

string
required
Wallet UUID

Response

number
required
Balance in lamports (1 SOL = 1,000,000,000 lamports)
number
required
Balance in SOL (decimal)

Get Tokens

List all SPL token balances for a wallet.
cURL

Path Parameters

string
required
Wallet UUID

Response

array
required
Array of token balances

Sign Message

Sign a message or transaction with the wallet’s private key.

Path Parameters

string
required
Wallet UUID

Request Body

string
Base64-encoded transaction (mutually exclusive with message)
string
Base64-encoded message (mutually exclusive with transaction)
Provide exactly one of transaction or message.

Response

string
required
Base64-encoded signature
string
required
Base58-encoded public key used for signing

Signer Backends

The wallet service supports multiple signer backends configured via environment variables:
Best for: Local development and prototyping
Keys are encrypted at rest using AES-256-GCM.

Security Considerations

Private keys are never exposed via the API. All signing happens within the wallet engine boundary.
Use labels to identify wallets instead of storing public keys in your application.
Best Practices:
  1. Use appropriate signer backend for your security requirements
  2. Enable auto-fund only on devnet for testing
  3. Implement wallet balance monitoring
  4. Track wallet usage via audit events
  5. Regularly rotate encryption secrets for encrypted-file backend
  6. Use HSM or MPC backends for production custody