Introduction
Overview of the Smart Account REST API v1
The Smart Account API v1 provides a RESTful interface for managing Solana smart accounts, following standard REST conventions while accounting for blockchain-specific considerations.
Base URL
Resource Structure
The API is organized around the following resource hierarchy:
Key Concepts
Smart Accounts
A smart account is a programmable Solana account that can be controlled by multiple signers with different permissions. Each smart account has:
- A unique address
- Multiple signers with specific permissions
- A signing threshold
- Optional admin control
- Optional time lock settings
- Optional spending limits
Security Policies
Smart accounts support multiple security policies:
-
Thresholds
- Defines minimum number of approvals required (M-of-N setup)
- Based on signers with CAN_VOTE permission
- Required for all transactions except spending limit debits
- Can be modified by admin or threshold-based approval
-
Admin Control
- Optional admin address for settings management
- Admin-only configuration changes
- Regular transactions still follow threshold rules
-
Time Locks
- Configurable delay between approval and execution
- Applies to all non-admin transactions
- Does not affect spending limit debits
-
Spending Limits
- Token-specific allowances
- Periodic resets (daily, weekly, etc.)
- Destination restrictions
- Bypass threshold requirements for routine transactions
Permissions
Signers can have the following permissions:
CAN_INITIATE
: Required to propose transactionsCAN_VOTE
: Required to approve transactions (must have enough for threshold)CAN_EXECUTE
: Required to execute approved transactions
Transaction Handling
Most mutation endpoints return partially-signed gas abstracted transactions that must be:
- Signed by the required signers (based on threshold or admin mode)
- Wait for time lock period if configured
- Submitted to the Solana network
These transactions have a ~2 minute validity window due to Solana’s recent blockhash mechanism.
Authentication
All API requests require authentication using your API key in the header:
Optional Headers
Network Selection
Idempotency
For account creation, you can prevent duplicates using an idempotency key:
Response Format
Successful responses follow standard REST conventions:
Error responses provide detailed information: