Skip to content

Historical validator dividends per subnet

GET /api/dtao/validator/dividends/history/v1

Returns a historical time series of validator dividend snapshots. Each row splits alpha and root dividends between the validator’s own share (after take) and the nominator share, and reports the per-kt nominator return — letting you chart a validator’s yield or a nominator’s expected returns over time.

Use hotkey and netuid to isolate a validator on a subnet. Bound the window with block_number, block_start/block_end, or timestamp_start/timestamp_end, and downsample with frequency (e.g. daily vs. hourly buckets).

NameInTypeRequiredDescription
hotkeyquerystringFilter by validator hotkey (SS58 or hex).
netuidqueryintegerSubnet id.
block_numberqueryintegerReturn the snapshot at this exact block.
block_startqueryintegerStart of block range (inclusive).
block_endqueryintegerEnd of block range (inclusive).
timestamp_startqueryintegerStart of Unix timestamp range in seconds (inclusive).
timestamp_endqueryintegerEnd of Unix timestamp range in seconds (inclusive).
frequencyqueryBucket size for the returned series, e.g. hourly, daily.
pagequeryinteger1-based page number.
limitqueryintegerPage size (max 200).
orderquerySort order, e.g. block_number_desc, day_desc.

Media: application/json

Schema
{
"type": "object",
"required": [
"pagination",
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"hotkey",
"netuid",
"block_number",
"timestamp",
"day",
"tempo",
"take",
"total_hotkey_alpha",
"total_hotkey_root",
"epochs",
"nominator_alpha_dividends",
"nominator_root_dividends",
"validator_alpha_dividends",
"validator_root_dividends",
"nominator_return_per_kt_alpha",
"nominator_return_per_kt_root"
],
"properties": {
"block_number": {
"type": "integer",
"format": "int32"
},
"day": {
"type": "string",
"format": "date"
},
"epochs": {
"type": "integer",
"format": "int32"
},
"hotkey": {
"type": "object",
"required": [
"ss58",
"hex"
],
"properties": {
"hex": {
"type": "string",
"description": "The hex format of the hot key"
},
"ss58": {
"type": "string",
"description": "The SS58 format of the hot key"
}
}
},
"name": {
"type": "string",
"nullable": true
},
"netuid": {
"type": "integer",
"format": "int32"
},
"nominator_alpha_dividends": {
"type": "string"
},
"nominator_return_per_kt_alpha": {
"type": "string"
},
"nominator_return_per_kt_root": {
"type": "string"
},
"nominator_root_dividends": {
"type": "string"
},
"take": {
"type": "string"
},
"tempo": {
"type": "integer",
"format": "int32"
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"total_hotkey_alpha": {
"type": "string"
},
"total_hotkey_root": {
"type": "string"
},
"validator_alpha_dividends": {
"type": "string"
},
"validator_root_dividends": {
"type": "string"
}
}
}
},
"pagination": {
"type": "object",
"required": [
"current_page",
"per_page",
"total_items",
"total_pages"
],
"properties": {
"current_page": {
"type": "integer",
"format": "int32"
},
"next_page": {
"type": "integer",
"format": "int32",
"nullable": true
},
"per_page": {
"type": "integer",
"format": "int32"
},
"prev_page": {
"type": "integer",
"format": "int32",
"nullable": true
},
"total_items": {
"type": "integer",
"format": "int32"
},
"total_pages": {
"type": "integer",
"format": "int32"
}
}
}
}
}

Interactive request console coming soon. In the meantime you can use the OpenAPI spec with any client (Insomnia, Bruno, Scalar, curl).

All Taostats API requests require an Authorization header containing your API key. See Getting Started.