Staking

  1. Stake API Returns an unsigned transaction to delegate SOL from your wallet to a validator.

  2. Balance API Returns the current balance and status of a wallet or stake account.

API Reference

Stake Request

POST /api/v1/stake

Submits a stake request to generate an unsigned transaction. This transaction needs to be signed by the private key of the wallet address and broadcasted to the network to trigger consolidation. This request also creates a stake account and user will have to pay one time rent fee for stake account creation.

Headers

Name
Type
Description

x-api-key*

String

API Key provided by Luganodes

Request Body

Name
Type
Description

validatorPubKey*

String

Public address of validator

walletPubKey*

String

Wallet address

amount*

Number

Stake amount in lamports. 1 SOL = 10^9 Lamports

Sample Request

Types

Stake Response Object

Property
Description
Type

validatorPubKey

Public address of validator

String

walletPubKey

Public address of user wallet

String

stakeAccountPubKey

Public address of stake account

String

unsignedTransactionBase64

Unsigned transaction which needs to be signed with the private key of the user wallet

String

stakeAmount

Amount of SOL to be staked

Number

rentAmount

Rent used for creation for stake account. Rent is required to be paid for creation of stake account and is a one time fee.

Number

totalAmount

Total SOL to be deducted from balance. It is the sum of stake amount and rent.

Number

Get Delegator Balance

POST api/v1/balance

Returns the list of stake accounts associated with a wallet address or for specified stake accounts. Each stake account now includes detailed balance, authorities, and epoch information.

Headers

Name
Type
Description

x-api-key*

String

API Key provided by Luganodes

Request Body

Name
Type
Description

walletPubKey

String (optional)

Public address of user wallet

stakeAccountPubKeys

Array<String> (optional)

List of stake account addresses to query

⚠️ Validation Rule

Exactly one of walletPubKey or stakeAccountPubKeys must be provided. If both are present, return 400 Bad Request.

200: OK — Balance Response Object

When queried by wallet

When queried by stake accounts

Sample Requests

By Wallet

By Multiple Stake Accounts

Response Object Fields

Property
Description
Type

walletPubkey

Public address of the user wallet (present only for wallet queries)

String

balance

Wallet SOL balance (lamports)

Number

stakeAccounts

List of stake accounts with details

Array<Object>

Stake Account Object

Property
Description
Type

pubkey

Public address of stake account

String

status

"active" or "inactive"

String

balance

SOL balance details

Object

total_sol

Total SOL in stake account

String

active_sol

Active staked SOL

String

inactive_sol

Inactive SOL

String

rewards_sol

Earned rewards

String

authorities

Stake and withdraw authorities

Object

stake_authority

Stake authority address

String

withdraw_authority

Withdraw authority address

String

epochs

Epoch metadata

Object

activation_epoch

Epoch when stake became active

Number / null

deactivation_epoch

Epoch when stake will deactivate

Number / null

current_epoch

Current epoch

Number

voter

Validator vote account address

String

created_at

Stake account creation timestamp (UTC)

String

updated_at

Last update timestamp (UTC)

String

Get Delegator Rewards

GET /api/v1/rewards

Returns aggregated rewards for a delegator address or specific stake accounts over a given time range. Rewards are grouped by the specified aggregation period (epoch, weekly, or monthly).


Query Parameters

Name
Type
Description

start_time *

Number

Start of the query period (Unix timestamp)

end_time *

Number

End of the query period (Unix timestamp)

period

String

Aggregation period — defaults to epoch Enum: epoch, weekly, monthly

wallet_address

String

Delegator wallet address

stake_accounts

Array<String>

One or more stake account addresses

⚠️ Validation Rules

  • Exactly one of wallet_address or stake_accounts must be provided.

  • If both are provided → return 400 Bad Request.

  • The difference between end_time and start_time must not exceed the selected period.


200: OK — Rewards Response Object


Response Object

Property
Description
Type

delegator_address

Delegator wallet or stake account queried

String

period

Aggregation interval

String

total_rewards

Total rewards during the requested range

Object

sol

Total rewards in SOL

String

rewards

List of reward entries for each period (epoch/day/week/month)

Array<Object>

Reward Entry Object

Property
Description
Type

epoch

Epoch number (for period=epoch)

Number

time_start

Start timestamp of the interval (UTC)

String

time_end

End timestamp of the interval (UTC)

String

rewards_earned

Total rewards earned in the period

Object

sol

Amount in SOL

String

reward_types

Breakdown of reward categories

Object

inflation_rewards.sol

Rewards from inflation

String

mev_rewards.sol

Rewards from MEV (if applicable)

String

starting_balance_sol

Balance at start of period

String

ending_balance_sol

Balance at end of period

String

Metadata Object

Property
Description
Type

query_time

ISO timestamp when query was executed

String

epochs_included

Number of epochs included in results

Number


Sample Request

By Wallet

By Multiple Stake Accounts

Get Delegator History

GET /api/v1/history/events

Returns a detailed chronological log of all staking-related events for a delegator wallet or specific stake accounts within a given time range. Includes summary statistics, validator participation, and pagination support.


Query Parameters

Name
Type
Description

start_time *

Number

Start of the query period (Unix timestamp)

end_time *

Number

End of the query period (Unix timestamp)

wallet_address

String

Delegator wallet address (use either this or stake_accounts)

stake_accounts

Array<String>

One or more stake account addresses (use either this or wallet_address)

page

Number

Page number for pagination. Default: 1

page_size

Number

Number of events per page. Default: 50

excluded_event_type

Array<String>

Event types to exclude from results (can take multiple values)

⚠️ Validation

  • Provide exactly one of wallet_address or stake_accounts. If both are present → 400 Bad Request.

  • Ensure end_timestart_time (difference not excessively large to avoid truncation).


200: OK — Response


Response Object

Property
Description
Type

address

Wallet or stake account address queried

String

time_range.start

Start timestamp (UTC)

String

time_range.end

End timestamp (UTC)

String

summary

Aggregated statistics over range

Object

total_rewards_earned.sol

Total rewards (SOL)

String

starting_balance.sol

Starting SOL balance

String

ending_balance.sol

Ending SOL balance

String

epochs_active

Number of epochs stake was active

Number

status_changes

Number of status transitions

Number

history

Chronological list of staking events

Array<Object>

validators

Validators interacted with during the period

Array<Object>

History Event Object

Property
Description
Type

event_type

Event type (account_created, delegation_activated, rewards_earned, etc.)

String

timestamp

UTC time of event

String

epoch

Epoch when event occurred

Number

details

Contextual event details

Object

Validator Object

Property
Description
Type

vote_account

Validator vote account address

String

identity

Validator identity address

String

name

Validator name (if known)

String

epochs_delegated

Number of epochs delegated to this validator

Number

total_rewards_from_validator.sol

Rewards earned from this validator (SOL)

String

Pagination Object

Property
Description
Type

page

Current page number

Number

page_size

Items per page

Number

total_events

Total number of events found

Number

has_more

Whether more pages exist

Boolean

Metadata Object

Property
Description
Type

query_time

API query timestamp (UTC)

String


Sample Requests

By Wallet

By Multiple Stake Accounts


Last updated