Overview
Key concepts
- Minimum stake: 2 SOL.
- Validator selection: provide either a validator
addressor aproviderName.- Provide one or the other, not both.
- Multiple stake requests: staking multiple times to the same validator address will create multiple
stakingPositionIdvalues. - Unstake timing: unstake requires about one epoch (~2–3 days) to complete.
- Collect timing and stake-account reserve: to maximize rewards and avoid unexpected stake-account closure:
- Prefer waiting 1 epoch after an unstake completes before collecting, or
- Leave a minimum reserve of 2,282,880 lamports (0.00228288 SOL) in the
stakingPositionIdto prevent the stake account from being destroyed.
Endpoint summary
- Stake:
POST /v2/transactions/stake - Unstake:
POST /v2/transactions/unstake - Collect (SOL-specific):
POST /v2/transactions/collect - Get staking positions:
GET /v2/wallets/{walletId}/staking/positions - Get staking rewards:
GET /v2/wallets/{walletId}/staking/rewards - List available validators:
GET /v2/delegation-addresses/{assetType}
Workflows
Stake (Solana)
EndpointPOST /v2/transactions/stake
Request rules
assetTypemust be"SOL".amountmust be at least"2".- Include
parameterswith either:address(validator public identifier), orproviderName(provider name)
Example: Stake using validator address
Example: Stake using provider name
Response
A successful request returns 201 Created with a transaction id.Unstake (Solana)
EndpointPOST /v2/transactions/unstake
Request rules
stakingPositionIdandamountare required.- After the unstake completes (about ~1 epoch), funds are inactive but not yet available for use.
- Use the Collect endpoint (below) to move inactive SOL back to the wallet.
Example: Unstake
Response
A successful request returns 201 OK with a transaction id.Collect (Solana-specific)
The collect action moves inactive SOL from a stake account back to the wallet’s available balance. EndpointPOST /v2/transactions/collect
Request rules
stakingPositionIdis required.amountis required.assetTypemust be"SOL".
Example: Collect
Possible failure reasons
- 400 Invalid request: unsupported
assetType, not enough available balance. - 404 Not found: staking position not found.
Get staking positions
This endpoint retrieves the staking positions (stake accounts) associated with a wallet. EndpointGET /v2/wallets/{walletId}/staking/positions
Expected behavior
- Accepts
SOLas a valid asset type to retrieve positions. - Returns SOL staking positions, including
stakingPositionIdvalues.
Get staking rewards
This endpoint is used to query rewards generated by staking and assigned to a wallet. EndpointGET /v2/wallets/{walletId}/staking/rewards
Expected behavior
- Accepts
SOLas a valid asset type. - Includes
addressas an optional filtering argument.
List available validators (delegation addresses)
A new endpoint is introduced to retrieve the list of available validators for delegation. EndpointGET /v2/delegation-addresses/{assetType}
Request parameters
assetType: must beSOLfor Solana validators.limit: pagination size.afterId: pagination cursor.
Example request
GET /v2/delegation-addresses/SOL?limit=10&afterId=XXXXXX
Example response
Common pitfalls
- For
POST /v2/transactions/stake, provide eitherparameters.addressorparameters.providerName(not both). - Do not expect unstaked SOL to be immediately available. Plan for epoch timing, then call collect.
- If you want to keep the stake account alive (for rewards or operational reasons), leave the minimum reserve in the stake account when collecting.

