# Get Validator Performance dTAO

Returns the latest validator performance within subnets, including trust, dividends, stake weights and daily returns.

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

_Last reviewed: 2026-09-18_

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

Requires an API key in the `Authorization` header.

Returns the latest validator performance within subnets, including trust, dividends, stake weights and daily returns. Records include hotkey family stake and childkey take alongside the validator's own values.

## Try it

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

### Examples

Get a validator's current per-subnet performance (trust, take, dividends)

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

Rank validators in subnet 19 by dividends

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

### Code samples

**cURL**

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

**JavaScript**

```js
const response = await fetch('https://api.taostats.io/api/dtao/validator/performance/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/performance/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 |
| `validator_type` | query | `string` |  | Validator type: "running_infra" or "childkey". |
| `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`, `uid_asc`, `uid_desc`, `nominators_asc`, `nominators_desc`, `position_asc`, `position_desc`, `last_updated_asc`, `last_updated_desc`, `v_trust_asc`, `v_trust_desc`, `type_asc`, `type_desc`, `take_asc`, `take_desc`, `childkey_take_asc`, `childkey_take_desc`, `proportion_asc`, `proportion_desc`, `subnet_weight_asc`, `subnet_weight_desc`, `root_weight_asc`, `root_weight_desc`, `alpha_asc`, `alpha_desc`, `family_subnet_weight_asc`, `family_subnet_weight_desc`, `family_root_weight_asc`, `family_root_weight_desc`, `family_alpha_asc`, `family_alpha_desc`, `dominance_asc`, `dominance_desc`, `dividends_asc`, `dividends_desc`, `ratio_asc`, `ratio_desc`, `nominator_return_per_day_asc`, `nominator_return_per_day_desc`, `validator_return_per_day_asc`, `validator_return_per_day_desc`. |

## Responses

### `200` — Validators retrieved successfully

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | `array` | Yes |  |
| `data[].alpha` | `string` | Yes |  |
| `data[].block_number` | `integer (int32)` | Yes |  |
| `data[].childkey_take` | `string` | Yes |  |
| `data[].coldkey` | `object` | Yes |  |
| `data[].coldkey.hex` | `string` | Yes | The hex format of the hot key |
| `data[].coldkey.ss58` | `string` | Yes | The SS58 format of the hot key |
| `data[].dividends` | `string` | Yes |  |
| `data[].dominance` | `string` | Yes |  |
| `data[].family_alpha` | `string` | Yes |  |
| `data[].family_root_weight` | `string` | Yes |  |
| `data[].family_subnet_weight` | `string` | 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[].last_updated` | `integer (int32)` | Yes |  |
| `data[].mech_last_updated` | `array` | Yes |  |
| `data[].mech_last_updated[]` | `integer (int32)` | Yes |  |
| `data[].name` | `string, nullable` |  |  |
| `data[].netuid` | `integer (int32)` | Yes |  |
| `data[].nominator_return_per_day` | `string` | Yes |  |
| `data[].nominators` | `integer (int32)` | Yes |  |
| `data[].position` | `integer (int32)` | Yes |  |
| `data[].proportion` | `string` | Yes |  |
| `data[].ratio` | `string` | Yes |  |
| `data[].root_weight` | `string` | Yes |  |
| `data[].subnet_weight` | `string` | Yes |  |
| `data[].take` | `string` | Yes |  |
| `data[].timestamp` | `string (date-time)` | Yes |  |
| `data[].uid` | `integer (int32)` | Yes |  |
| `data[].validator_return_per_day` | `string` | Yes |  |
| `data[].validator_type` | `string` | Yes |  |
| `data[].vtrust` | `string, nullable` |  |  |
| `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": 4107444,
      "blocks_since_weights_set": 196366,
      "emission": "0",
      "hotkey": {
        "hex": "0xd0622986d748433d484b9b351b9a38737ee869ef2a50b75e5f890bee2c3afb18",
        "ss58": "5GmvyePN9aYErXBBhBnxZKGoGk4LKZApE4NkaSzW62CYCYNA"
      },
      "netuid": 12,
      "tempo": 360,
      "timestamp": "2024-10-23T17:14:24.001Z",
      "update_status": 2
    },
    {
      "block_number": 4107083,
      "blocks_since_weights_set": 196005,
      "emission": "0",
      "hotkey": {
        "hex": "0xd0622986d748433d484b9b351b9a38737ee869ef2a50b75e5f890bee2c3afb18",
        "ss58": "5GmvyePN9aYErXBBhBnxZKGoGk4LKZApE4NkaSzW62CYCYNA"
      },
      "netuid": 12,
      "tempo": 360,
      "timestamp": "2024-10-23T16:02:12.001Z",
      "update_status": 2
    }
  ],
  "pagination": {
    "current_page": 1,
    "next_page": null,
    "per_page": 200,
    "prev_page": null,
    "total_items": 140,
    "total_pages": 1
  }
}
```

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