Introduction to Solana Reporting API

Overview

The Solana Staking Reporting API introduces enhanced features, including timezone-based reporting for more precise analysis and improved tracking of validator and delegator statuses.

🌐 Supported network: Mainnet


➡️ Get the Rewards

This endpoint returns the total rewards between specified timestamps for a single or multiple addresses.

Note that there may be processing delays at epoch end when gathering MEV and inflation rewards.

Endpoints

Endpoint
Get a Stream of Rewards - POST /rewards
Get a Stream of Rewards for a Single Address - GET /rewards/{address}
Get a Yield for a Validator Address - GET /yield/{address}
Get a Stream of Yield Summaries - GET /yield

Sample Request

Below is a sample request for a single validator. For multiple validators, you can include up to 1000 addresses per request.

Request

curl --location 'https://svc.blockdaemon.com/reporting/staking/v2/solana/mainnet/validator/rewards/FQwewNXahV7MiZcLpY6p1xhUs2acVGQ3U5Xxc7FzV571?startTime=1678174507&endTime=1678779307&period=weekly' \
--header 'Authorization: Bearer YOUR_KEY' \
--header 'accept: application/x-ndjson'

This would return a response below.

Response

{
  "address": "FQwewNXahV7MiZcLpY6p1xhUs2acVGQ3U5Xxc7FzV571",
  "denomination": "lamports",
  "return": "152995957268",
  "startTime": 1678174507,
  "endTime": 1678779306,
  "period": "WEEKLY",
  "startBalance": "582507713330",
  "metadata": {
    "epoch": "419-422",
    "fee": "33473577072",
    "identity": "7cVfgArCheMR6Cs4t6vz5rfnqd56vZq4ndaBrY5xkxXy",
    "slot": "181226296-182498587",
    "voteKey": "FQwewNXahV7MiZcLpY6p1xhUs2acVGQ3U5Xxc7FzV571",
    "voting": "119522380196",
    "stake": "1118732553958212"
  }
}

📘

Info

To get the most recent rewards, you need to make a request for either epoch or raw rewards by specifying an end time in the future and a start time. In the response, the highest startTime value shows the most recent reward.

➡️ Get a Status

This endpoint returns the current status of a validator/delegator. Possible statuses include:

Endpoints

Endpoint
Get a Stream of Statuses - POST /status
Get Status for an Address - GET /status/{address}

Sample Request

Below is an example to get the status of a single validator.

cURL

curl -X 'GET' \
    'https://svc.blockdaemon.com/reporting/staking/v2/solana/mainnet/delegator/status/78NumgHAAgfaHUDPBPTyzFcSgvPnXSqqTnSmXPAW9KZW' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer KEY'

This would return a response below.

JSON

{
  "address": "78NumgHAAgfaHUDPBPTyzFcSgvPnXSqqTnSmXPAW9KZW",
  "status": "ACTIVE",
  "metadata": {
    "activationEpoch": "631",
    "deactivationEpoch": "18446744073709551615",
    "identity": "7cVfgArCheMR6Cs4t6vz5rfnqd56vZq4ndaBrY5xkxXy",
    "solanaAccount": "A2VLtkfrXxBCLKUGQqwhyD5fmGSvSZpc6a8jMA78T2eL",
    "stakeAccount": "78NumgHAAgfaHUDPBPTyzFcSgvPnXSqqTnSmXPAW9KZW",
    "type": "delegator",
    "voteKey": "FQwewNXahV7MiZcLpY6p1xhUs2acVGQ3U5Xxc7FzV571"
  }
}

➡️ Get Health

The endpoint provides the health status of the rewards processing system. You can track:

Endpoint

Endpoint
Get the Protocol Rewards Processing Health - GET /health

Sample Request

Below is an example request for a Health endpoint.

Request

curl 'https://svc.blockdaemon.com/reporting/staking/v2/solana/mainnet/health' \
     -H 'Authorization: Bearer YOUR_KEY'

The response will include information about the current status of the API, such as the current chain epoch, last processed inflation epoch, and last processed MEV epoch.

Response

{
    "status": "OPTIMAL",
    "timestamp": 1716893171,
    "metadata": {
        "lastProcessedInflationEpoch": "620",
        "lastProcessedMevEpoch": "620",
        "lastProcessStatusesEpoch": "621",
        "chainEpoch": "621",
        "chainSlot": "268425883",
        "lastProcessedSlot": "268425383",
        "lastProcessedMevTxTimestamp": "1716893374"
    }
}

📘

Info

The endpoint will return unknown if queried before 2024/06/03.