# Get Validator Yield

Returns the latest validator APY and epoch participation metrics by hotkey and subnet.

_Source: https://beta.taostats.io/docs/api-reference/validator/get-validator-yield-latest_

_Last reviewed: 2026-09-18_

```http
GET https://api.taostats.io/api/dtao/validator/yield/latest/v1
```

Requires an API key in the `Authorization` header.

Returns the latest validator APY and epoch participation metrics by hotkey and subnet. Yield fields cover one-hour, one-day, seven-day and thirty-day windows.

## Try it

Try this request in the browser on the HTML version of this page, or use the code samples below.

### Examples

Get the current APY for a validator across subnets

```text
https://api.taostats.io/api/dtao/validator/yield/latest/v1?hotkey=5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1
```

Find the highest 30-day APY validators in subnet 19

```text
https://api.taostats.io/api/dtao/validator/yield/latest/v1?netuid=19&order=thirty_day_apy_desc&limit=10
```

### Code samples

**cURL**

```bash
curl -H "Authorization: <YOUR_API_KEY>" \
  "https://api.taostats.io/api/dtao/validator/yield/latest/v1?hotkey=5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1"
```

**JavaScript**

```js
const response = await fetch('https://api.taostats.io/api/dtao/validator/yield/latest/v1?hotkey=5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1', {
  headers: {
    Authorization: '<YOUR_API_KEY>',
  },
});
const data = await response.json();
```

**Python**

```python
import requests

response = requests.get(
    "https://api.taostats.io/api/dtao/validator/yield/latest/v1?hotkey=5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1",
    headers={"Authorization": "<YOUR_API_KEY>"},
)
data = response.json()
```

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `hotkey` | query | `string` |  | SS58 or hex format |
| `netuid` | query | `integer (int32)` |  | subnet |
| `min_stake` | query | `integer (int64)` |  | min stake in rao |
| `page` | query | `integer (int32)` |  | The page number of the response. |
| `limit` | query | `integer (int32)` |  | The number of responses. max is 200, |
| `order` | query | `string` |  | One of `netuid_asc`, `netuid_desc`, `name_asc`, `name_desc`, `stake_asc`, `stake_desc`, `one_hour_apy_asc`, `one_hour_apy_desc`, `one_day_apy_asc`, `one_day_apy_desc`, `seven_day_apy_asc`, `seven_day_apy_desc`, `thirty_day_apy_asc`, `thirty_day_apy_desc`. |

## Responses

### `200` — Validators retrieved successfully

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | `array` | Yes |  |
| `data[].block_number` | `integer (int32)` | Yes |  |
| `data[].hotkey` | `object` | Yes |  |
| `data[].hotkey.hex` | `string` | Yes | The hex format of the hot key |
| `data[].hotkey.ss58` | `string` | Yes | The SS58 format of the hot key |
| `data[].name` | `string, nullable` |  |  |
| `data[].netuid` | `integer (int32)` | Yes |  |
| `data[].one_day_apy` | `number (double)` | Yes |  |
| `data[].one_day_epoch_participation` | `number (double), nullable` |  |  |
| `data[].one_hour_apy` | `number (double)` | Yes |  |
| `data[].seven_day_apy` | `number (double)` | Yes |  |
| `data[].seven_day_epoch_participation` | `number (double), nullable` |  |  |
| `data[].stake` | `integer (int64)` | Yes |  |
| `data[].thirty_day_apy` | `number (double)` | Yes |  |
| `data[].thirty_day_epoch_participation` | `number (double), nullable` |  |  |
| `data[].timestamp` | `string (date-time)` | Yes |  |
| `pagination` | `object` | Yes |  |
| `pagination.current_page` | `integer (int32)` | Yes |  |
| `pagination.next_page` | `integer (int32), nullable` |  |  |
| `pagination.per_page` | `integer (int32)` | Yes |  |
| `pagination.prev_page` | `integer (int32), nullable` |  |  |
| `pagination.total_items` | `integer (int32)` | Yes |  |
| `pagination.total_pages` | `integer (int32)` | Yes |  |

**Example response**

```json
{
  "data": [
    {
      "block_number": 5373830,
      "hotkey": {
        "hex": "0xbc0e6b701243978c1fe73d721c7b157943a713fca9f3c88cad7a9f7799bc6b26",
        "ss58": "5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1"
      },
      "name": "Taostats & Corcel",
      "netuid": 0,
      "one_day_apy": "0.2430601273486563855654179324",
      "one_day_epoch_participation": null,
      "one_hour_apy": "0.3752308800971794194682341741",
      "seven_day_apy": "0.23927172046185372240705",
      "seven_day_epoch_participation": null,
      "stake": "779899178121666",
      "thirty_day_apy": "0.185606896818915301752",
      "thirty_day_epoch_participation": null,
      "timestamp": "2025-04-17T21:19:36Z"
    },
    {
      "block_number": 5373830,
      "hotkey": {
        "hex": "0x84d83d08ca89f8e60424ffa286f165c16dd8752e4faa4d8977221e6720678d28",
        "ss58": "5F4tQyWrhfGVcNhoqeiNsR6KjD4wMZ2kfhLj4oHYuyHbZAc3"
      },
      "name": "Openτensor Foundaτion",
      "netuid": 0,
      "one_day_apy": "0.1716361613454353374393362494",
      "one_day_epoch_participation": null,
      "one_hour_apy": "0.1800868840676219746271894071",
      "seven_day_apy": "0.17044204567483536932095",
      "seven_day_epoch_participation": null,
      "stake": "673152971532613",
      "thirty_day_apy": "0.14113249594127288381085",
      "thirty_day_epoch_participation": null,
      "timestamp": "2025-04-17T21:19:36Z"
    }
  ],
  "pagination": {
    "current_page": 1,
    "next_page": 2,
    "per_page": 50,
    "prev_page": null,
    "total_items": 2605,
    "total_pages": 53
  }
}
```

**Response details**

```text
    {
      "hotkey": {
        "ss58": "5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1",
        "hex": "0xbc0e6b701243978c1fe73d721c7b157943a713fca9f3c88cad7a9f7799bc6b26"
      },
      "name": "Taostats & Corcel",
      "netuid": 0,
      "block_number": 5457682,
      "timestamp": "2025-04-29T12:50:00Z",
      "stake": "797764970178086", as rao
      "one_hour_apy": "0.1957403658346058508731763447",as number
      "one_day_apy": "0.1958641988377613847261875705",as number
      "seven_day_apy": "0.20796523177254449036165",as number
      "thirty_day_apy": "0.21373806029020066287845",as number
      "one_day_epoch_participation": "1",as number (to percentage of participation)
      "seven_day_epoch_participation": "1",as number (to percentage of participation)
      "thirty_day_epoch_participation": "1" as number (to percentage of participation)
    },
```

### Other responses

| Status | Meaning |
| --- | --- |
| `400` | Bad request |
| `404` | Validators not found |
| `500` | Internal server error |

Every request needs an `Authorization` header holding your API key — see [Getting started with the Taostats API](https://beta.taostats.io/docs/start-here/getting-started-with-taostats-api).
