Documentation / New API reference / Gamma
Get Gamma Activity
Reference
Last reviewed 2026-11-06
Newest activity first.
Try it
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
type | query | string | Filter by activity kind: tao_usd_price_fed, mint, move, close, set_spender, set_cap, spend, spend_skipped, set_service, remove_service, coldkey_swap, or written_off. One of tao_usd_price_fed, mint, move, close, set_spender, set_cap, spend, spend_skipped, set_service, remove_service, coldkey_swap, written_off. | |
source | query | string | Filter by mint source (tao or stake). One of tao, stake. | |
netuid | query | string | Filter by one or more subnet IDs. | |
coldkey | query | string | Filter by coldkey (SS58 or 0x-hex). | |
hotkey | query | string | Filter by hotkey (SS58 or 0x-hex). | |
spender | query | string | Filter by deposit spender (SS58 or 0x-hex). | |
block_start | query | integer (int32) | Inclusive block range start. | |
block_end | query | integer (int32) | Inclusive block range end. | |
timestamp_start | query | integer (int64) | Inclusive timestamp range start in Unix seconds. | |
timestamp_end | query | integer (int64) | Inclusive timestamp range end in Unix seconds. | |
page | query | integer (int32) | Page number, starting at 1. Default: 1. Bounded window: (page − 1) × limit must be below 1,000,000. | |
limit | query | integer (int32) | Results per page. Default: 50; maximum: 200. |
Responses
200 — Paged Gamma activity
| Field | Type | Required | Description |
|---|---|---|---|
data | array | Yes | |
data[].alpha | string, nullable | Yes | Alpha amount in rao, as a decimal string. |
data[].block_number | integer (int32) | Yes | Block height. |
data[].coldkey | string, nullable | Yes | Coldkey involved in the activity, or null when the row has none. |
data[].daily_spend_cap | string, nullable | Yes | Daily spend cap in gamma units, as a decimal string. |
data[].destination_hotkey | string, nullable | Yes | Destination hotkey for a move, when present. |
data[].event_type | string | Yes | Activity kind. One of tao_usd_price_fed, mint, move, close, set_spender, set_cap, spend, spend_skipped, set_service, remove_service, coldkey_swap, written_off. |
data[].extrinsic_id | string, nullable | Yes | Extrinsic identifier, or null for a synthetic storage-change row. |
data[].gamma | string, nullable | Yes | Gamma amount, as a decimal string. |
data[].hotkey | string, nullable | Yes | Hotkey involved in the activity, when present. |
data[].id | string | Yes | Stable row identifier shared by the time, subnet, and account tables. |
data[].netuid | integer (int32), nullable | Yes | Subnet ID, or null for the TAO/USD feed event. |
data[].new_coldkey | string, nullable | Yes | Coldkey after a coldkey swap, or null for other activity. |
data[].old_coldkey | string, nullable | Yes | Coldkey before a coldkey swap, or null for other activity. |
data[].origin_hotkey | string, nullable | Yes | Source hotkey for a stake-paid mint or move, when present. |
data[].price | string, nullable | Yes | TAO/USD feed price in gamma units per TAO, as a decimal string. |
data[].reason | string, nullable | Yes | Why the chain skipped a spend entry (spend_skipped rows only): the entry's DispatchError as Pallet.Error for a module error, for example SubtensorModule.GammaDepositDailySpendCapExceeded; null for other activity. |
data[].reference | string, nullable | Yes | Opaque 32-byte spend reference as lowercase 0x-prefixed hex. |
data[].signer | string, nullable | Yes | Extrinsic signer, when present. |
data[].source | string, nullable | Yes | Mint source (tao or stake), or null for other activity. One of tao, stake. |
data[].spender | string, nullable | Yes | Deposit spender, when present. |
data[].tao | string, nullable | Yes | TAO amount in rao, as a decimal string. |
data[].tao_value | string, nullable | Yes | TAO value in rao, as a decimal string. |
data[].timestamp | string | Yes | ISO 8601 timestamp with millisecond precision. |
data[].usd_value | string, nullable | Yes | Gamma amount divided by 10^9 and rounded to two decimal places. |
pagination | object | Yes | Pagination metadata appended to collection responses. next_page / prev_page are explicitly required+nullable in the OpenAPI spec: per docs/api_standards.md we emit null rather than omitting the field, so the SDK should model them as Option/nullable types that are always present in the response. total_items is the exact number of matching rows on every route (issue #992). It used to stop at 1,000,000, which reported a million transfers when finney holds 7,513,252 and a million events when the real figure is 981,179,110; the cap was removed on 29 Sep 2026 and nothing may reintroduce one — crate::pagination::exact_count_sql is the only count form, and no_capped_count_reaches_the_api_surface in data-debug-scripts fails the build if a capped one comes back. total_pages is still bounded, to crate::pagination::max_reachable_page(per_page), because the page parameter is capped to a 1,000,000-row window: deep OFFSET paging reads every skipped row (24.7M rows / 36.6 GiB / 42 s measured on one endpoint, issue #413). So total_pages is exactly the last page this API will serve and next_page / prev_page stay coherent at the window edge, while total_items tells the caller how many rows there really are. History beyond the window is reached with each endpoint's range filters, not a larger page. |
pagination.current_page | integer (int32) | Yes | 1-indexed page that produced the rows in data. |
pagination.next_page | integer (int32), nullable | Yes | Next page number, or null if this is the last page. |
pagination.per_page | integer (int32) | Yes | Number of items requested per page. |
pagination.prev_page | integer (int32), nullable | Yes | Previous page number, or null if this is the first page. |
pagination.total_items | integer (int64) | Yes | Number of items matching the query across all pages. This is the exact count — every matching row, however many there are. It is not bounded by total_pages, so a listing can legitimately report far more items than total_pages × per_page. |
pagination.total_pages | integer (int32) | Yes | Number of pages at the current per_page that this API will serve: ceil(total_items / per_page), capped at ceil(1000000 / per_page) because the page parameter only reaches into the first 1,000,000 rows. When the cap bites, total_items is still the true total and this is the last page a request can ask for; reach deeper history with the endpoint's range filters instead of a larger page. |
400 — Invalid query parameter
| Field | Type | Required | Description |
|---|---|---|---|
message | string | Yes | Plain-english message describing the failure from the caller's perspective. |
status_code | integer (int32) | Yes | HTTP status code (mirrored in the response status line for convenience). |
500 — Internal server error
| Field | Type | Required | Description |
|---|---|---|---|
message | string | Yes | Plain-english message describing the failure from the caller's perspective. |
status_code | integer (int32) | Yes | HTTP status code (mirrored in the response status line for convenience). |
Every request needs an Authorization header holding your API key — see Getting started with the Taostats API.