Skip to main content

Overview

Key concepts

  • Minimum stake: 2 SOL.
  • Validator selection: provide either a validator address or a providerName.
    • Provide one or the other, not both.
  • Multiple stake requests: staking multiple times to the same validator address will create multiple stakingPositionId values.
  • 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 stakingPositionId to prevent the stake account from being destroyed.

Endpoint summary

Workflows

Stake (Solana)

Endpoint POST /v2/transactions/stake

Request rules

  • assetType must be "SOL".
  • amount must be at least "2".
  • Include parameters with either:
    • address (validator public identifier), or
    • providerName (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)

Endpoint POST /v2/transactions/unstake

Request rules

  • stakingPositionId and amount are 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 Created with a transaction id.

Collect (Solana-specific)

The collect action moves inactive SOL from a stake account back to the wallet’s available balance. Endpoint POST /v2/transactions/collect

Request rules

  • stakingPositionId is required.
  • amount is required.
  • assetType must 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. Endpoint GET /v2/wallets/{walletId}/staking/positions

Expected behavior

  • Accepts SOL as a valid asset type to retrieve positions.
  • Returns SOL staking positions, including stakingPositionId values.
  • A new position appears only after the stake transaction is confirmed on-chain, typically a few minutes after blockchainTxId is available. Poll this endpoint with the transactionId filter set to your stake transaction ID. See When the staking position ID becomes available.

Get staking rewards

This endpoint is used to query rewards generated by staking and assigned to a wallet. Endpoint GET /v2/wallets/{walletId}/staking/rewards

Expected behavior

  • Accepts SOL as a valid asset type.
  • Includes address as an optional filtering argument.

List available validators (delegation addresses)

A new endpoint is introduced to retrieve the list of available validators for delegation. Endpoint GET /v2/delegation-addresses/{assetType}

Request parameters

  • assetType: must be SOL for 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 either parameters.address or parameters.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.