---
updatedAt: 2026-06-12T12:30:29.000Z
---

Fetch the complete documentation index at: https://docs.blockdaemon.com/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Overview

The Staking Reporting API enables you to monitor, analyze, and retrieve detailed information about staking-related activities, such as rewards, statuses, and processing health, across multiple protocols, including:

<HTMLBlock>{`
<style>
  body {
    font-family: Arial, sans-serif;
  }
  .card-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    column-gap: 20px;
    width: 70%;
    max-width: 1200px;
    margin: 0 auto;
  }
  .card-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-bottom: 20px; /* Adjusts gap below the card */
  }

  .card-container a {
    text-decoration: none !important;
    color: black !important;
    font-weight: 700;
  }
  .card {
    position: relative;
    margin-bottom: 1rem;
    border: 1px solid #ddd;
    border-radius: 8px;
    overflow: hidden;
    height: auto;
    width: 100%;
    max-width: 300px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    text-align: center;
    transition: background-color 2s ease;
  }
  .card-body {
    display: flex;
    background-color: white;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    height: 110px;
    transition: background-color 0.5s ease;
  }

  .card-body img {
    width: 50px;
    margin-bottom: 0.5rem;
  }

  .card img[src*='python.png'] {
    width: 40px;
  }

  .card img[src*='Go-Logo_Blue.png'] {
    width: 80px;
    margin: -13px !important;
  }
  .card-title,
  .java-title,
  .go-title {
    font-size: 0.8rem;
    margin: 0 !important;
  }
  .card-description {
    font-size: 0.8rem;
    text-align: right;
    margin: 0 !important;
  }
  .card-link {
    color: #007bff;
    text-decoration: none;
    font-weight: bold;
  }
  .card-link:hover {
    text-decoration: none;
  }
  .card-body:hover {
    background-color: #e3d7ff;
  }
  @media only screen and (max-width: 600px) {
    .card-grid {
      grid-template-columns: repeat(2, 1fr);
      gap: 16px;
    }
  }
</style>
<body>
  <div class="card-grid">
    <div class="card-container">
      <a
        href="https://docs.blockdaemon.com/reference/ethereum-api-v2-overview"
        class="card"
        target="_blank"
      >
        <div class="card-body">
          <img
            src="https://files.readme.io/2adb22a-ethereum-eth-logo.png"
            alt="eth Logo"
          />
          <p class="java-title">Ethereum</p>
        </div>
      </a>
    </div>

    <div class="card-container">
      <a
        href="https://docs.blockdaemon.com/reference/cardano-reporting-api-overview"
        class="card"
        target="_blank"
      >
        <div class="card-body">
          <img
            src="https://files.readme.io/3a4c94c-cardano_ada-512.webp"
            alt="cardano Logo"
          />
          <p class="card-title">Cardano</p>
        </div>
      </a>
    </div>

    <div class="card-container">
      <a
        href="https://docs.blockdaemon.com/reference/polkadot-reporting-api-overview"
        class="card"
        target="_blank"
      >
        <div class="card-body">
          <img
            src="https://files.readme.io/d35821e-polkadot-new-dot-logo.png"
            alt="polkadot Logo"
          />
          <p class="card-title">Polkadot</p>
        </div>
      </a>
    </div>

    <div class="card-container">
      <a
        href="https://docs.blockdaemon.com/reference/polygon-reporting-api-overview"
        class="card"
        target="_blank"
      >
        <div class="card-body">
          <img
            src="https://files.readme.io/149a714-polygon-matic-logo.png"
            alt="polygon Logo"
          />
          <p class="card-title">Polygon</p>
        </div>
      </a>
    </div>
    
    <div class="card-container">
      <a
        href="https://docs.blockdaemon.com/reference/solana-reporting-api-overview"
        class="card"
        target="_blank"
      >
        <div class="card-body">
          <img
            src="https://files.readme.io/fa09859-solana-sol-logo.png"
            alt="solana Logo"
          />
          <p class="card-title">Solana</p>
        </div>
      </a>
    </div>
  </div>
</body>
`}</HTMLBlock>

> 📘 Response Format
>
> Endpoints that return `application/x-ndjson` also support `application/json` and `text/csv`. Use the `Accept` request header to specify the format you want:
>
> | `Accept` header                  | Response format               |
> | :------------------------------- | :---------------------------- |
> | `application/x-ndjson` (default) | Newline-delimited JSON stream |
> | `application/json`               | Standard JSON                 |
> | `text/csv`                       | CSV                           |

## Use Cases

### ➡️ Data Granularity

The API supports different levels of data granularity, such as daily or epoch-based data, which can be queried using specific endpoints. Rewards are available at the epoch level as well as daily, weekly, monthly, and yearly roll-ups.

Below is the sample request to [get Ethereum Validator Rewards](https://docs.blockdaemon.com/reference/getrewards-ethereum):

```curl
curl --request POST \
     --url https://svc.blockdaemon.com/reporting/staking/v2/ethereum/mainnet/validator/rewards \
     --header 'X-API-Key: <API_KEY>' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
      {
        "period": "monthly",
        "aggregate": false,
        "denomination": "wei"
      }
    '
```

This response shows reward data for the specified validator in a monthly granularity, along with details about the validator's start balance and epoch range.

```json
{
  "address": "0xaf3cfa981e084985c88928ae2fc7802790195d5d4e297fb384230b6b8e4540b2654a50a17dfeccc73f550461bd794563",
  "denomination": "wei",
  "return": "17859798000000000",
  "startTime": 1716422400,
  "endTime": 1719100799,
  "period": "monthly",
  "startBalance": "32002448366000000000",
  "metadata": {
    "epoch": "285413-287302",
    "withdrawals": "18477398000000000",
    "deposits": "0",
    "syncCommitteeReward": "0",
    "blockReward": "0",
    "attestationReward": "17859798000000000",
    "mevBlockReward": "0",
    "blockFeeReward": "0",
    "index": "1333904"
  }
}
```

### ➡️ Reporting and Analytics

The Staking Reporting API helps users track staking performance, returns, and identify areas for improvement with clear reports and analytics.

a) Below is the sample request to [get Polygon Address Status](https://docs.blockdaemon.com/reference/getstatus-polygon):

```curl
curl --request GET \
     --url https://svc.blockdaemon.com/reporting/staking/v2/polygon/mainnet/validator/status/0xAB30eF276ADC2bE22CE58d75B4F4009173A73676 \
     --header 'X-API-Key: YOUR_API_KEY' \
     --header 'accept: application/json'
```

This response shows the status of the validator's address along with the metadata details for tracking the validator's performance and status.

```json
{
  "address": "0x875e901465A639f2E71fcfC10F426eD32F5A909a",
  "status": "ACTIVE",
  "timestamp": 1710003868,
  "metadata": {
    "validatorId": "143",
    "validatorContract": "0x875e901465A639f2E71fcfC10F426eD32F5A909a",
    "type": "validator",
    "owner": "0xAB30eF276ADC2bE22CE58d75B4F4009173A73676"
  }
}
```

b) Another example is the Rewards Processing Health. The API also allows users to monitor the protocol’s rewards processing health and the current status of the blockchain.

```curl
curl --request GET \
     --url https://svc.blockdaemon.com/reporting/staking/v2/polygon/mainnet/health \
     --header 'X-API-Key: YOUR_API_KEY' \
     --header 'accept: application/json'
```

This response indicates that the protocol is operating in an "OPTIMAL" state, with metadata providing an additional context of the network.

```json
{
  "status": "OPTIMAL",
  "timestamp": 1737556200,
  "metadata": {
    "chainCheckpoint": "75333",
    "lastProcessedCheckpoint": "75332"
  }
}
```

### ➡️ Yield Metrics

**APR** is the annual percentage rate. It represents a rate of return without considering the compounding of rewards. In the context of the yield APIs, APR is calculated over the selected date range and annualized.

The calculation is:

<HTMLBlock>{`
<div style="font-size: 1.2em;">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>APR</mi>
    <mo>=</mo>
    <mo>(</mo>
    <mfrac>
      <mrow>
        <mi>Total&nbsp;Return&nbsp;for&nbsp;Period</mi>
      </mrow>
      <mrow>
        <mi>Average&nbsp;Stake&nbsp;for&nbsp;Period</mi>
      </mrow>
    </mfrac>
    <mo>)</mo>
    <mo>&#x00D7;</mo>
    <mo>(</mo>
    <mfrac>
      <mrow>
        <mi>Periods&nbsp;per&nbsp;Year</mi>
      </mrow>
      <mrow>
        <mi>Periods&nbsp;in&nbsp;Calculation</mi>
      </mrow>
    </mfrac>
    <mo>)</mo>
  </mrow>
</math>
</div>
`}</HTMLBlock>

**APY** is the annual percentage yield, which takes into account the APR and compounding of rewards. We use the standard APY calculation:

<HTMLBlock>{`
<div style="font-size: 1.2em;">
  <math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
    <mrow>
      <mi>APY</mi>
      <mo>=</mo>
      <msup>
        <mrow>
          <mo>(</mo>
          <mrow>
            <mn>1</mn>
            <mo>+</mo>
            <mfrac>
              <mi>APR</mi>
              <mi>N</mi>
            </mfrac>
          </mrow>
          <mo>)</mo>
        </mrow>
        <mi>N</mi>
      </msup>
      <mo>&#x2212;</mo>
      <mn>1</mn>
    </mrow>
  </math>
</div>
`}</HTMLBlock>

> **APY** = annual percentage yield\
> **APR** = annual percentage rate\
> **N** = number of compounding periods per year

> 🚧 Note
>
> For Ethereum, APY is only relevant **Post-Pectra upgrade**, where a validator’s configured maximum effective balance exceeds its current effective balance.
>
> In this case, rewards are auto-compounded until the maximum is reached. If the validator is already at the maximum, rewards are not compounded, and APY becomes irrelevant.

> 👍 Related API References
>
> * **Solana**
>   * [Get a Stream of Yield Summaries (Multiple Validators/Delegators)](https://docs.blockdaemon.com/reference/getyields-solana)
>   * [Get a Yield for a Validator Address](https://docs.blockdaemon.com/reference/getyield-validator-solana)
> * **Ethereum**
>   * [Get a Stream of Yield Summaries (Multiple Validators)](https://docs.blockdaemon.com/reference/getyields-ethereum)
>   * [Get a Yield for a Validator Address](https://docs.blockdaemon.com/reference/getyield-validator-ethereum)

<br />

## 👋 Need Help?

Contact us through [email](mailto:support@blockdaemon.com) or our [support page](https://www.blockdaemon.com/support) for any issues, bugs, or assistance you may need.