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 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. 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.

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.