# Get Staking/Delegation Events

Returns staking and unstaking activity with the nominator, delegate, subnet, amounts, fees and transaction details.

_Source: https://beta.taostats.io/docs/api-reference/delegation/get-delegation_

_Last reviewed: 2026-09-18_

```http
GET https://api.taostats.io/api/delegation/v1
```

Requires an API key in the `Authorization` header.

Returns staking and unstaking activity with the nominator, delegate, subnet, amounts, fees and transaction details. Filter by wallet, validator, action, transfer status or block and time ranges.

## Try it

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

### Examples

See the most recent 50 staking and unstaking events for a wallet

```text
https://api.taostats.io/api/delegation/v1?nominator=5GH2aUTMRUh1RprCgH4x3tRyCaKeUi5BfmYCfs1NARA8R54n&limit=50
```

Get recent delegation activity to a specific validator

```text
https://api.taostats.io/api/delegation/v1?delegate=5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1&limit=50
```

List only undelegation (unstake) events for a wallet

```text
https://api.taostats.io/api/delegation/v1?nominator=5GH2aUTMRUh1RprCgH4x3tRyCaKeUi5BfmYCfs1NARA8R54n&action=undelegate&limit=50
```

### Code samples

**cURL**

```bash
curl -H "Authorization: <YOUR_API_KEY>" \
  "https://api.taostats.io/api/delegation/v1?nominator=5GH2aUTMRUh1RprCgH4x3tRyCaKeUi5BfmYCfs1NARA8R54n&limit=50"
```

**JavaScript**

```js
const response = await fetch('https://api.taostats.io/api/delegation/v1?nominator=5GH2aUTMRUh1RprCgH4x3tRyCaKeUi5BfmYCfs1NARA8R54n&limit=50', {
  headers: {
    Authorization: '<YOUR_API_KEY>',
  },
});
const data = await response.json();
```

**Python**

```python
import requests

response = requests.get(
    "https://api.taostats.io/api/delegation/v1?nominator=5GH2aUTMRUh1RprCgH4x3tRyCaKeUi5BfmYCfs1NARA8R54n&limit=50",
    headers={"Authorization": "<YOUR_API_KEY>"},
)
data = response.json()
```

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `nominator` | query | `string` |  | SS58 or hex format |
| `delegate` | query | `string` |  | SS58 or hex format |
| `action` | query | `string` |  | Delegation or undelegation (or both)? One of `delegate`, `undelegate`, `all`. |
| `is_transfer` | query | `boolean` |  | Is this a transfer? |
| `transfer_address` | query | `string` |  | SS58 or hex format |
| `extrinsic_id` | query | `string` |  | ID of extrinsic |
| `amount_min` | query | `string` |  | Minimum amount (inclusive) |
| `amount_max` | query | `string` |  | Maximum amount (inclusive) |
| `netuid` | query | `integer (int32)` |  | Subnet |
| `block_number` | query | `integer (int32)` |  | The exact block number |
| `block_start` | query | `integer (int32)` |  | Start of block range (inclusive) |
| `block_end` | query | `integer (int32)` |  | End of block range (inclusive) |
| `timestamp_start` | query | `integer (int64)` |  | Start of timestamp range in Unix timestamp (seconds since 1970-01-01) (inclusive) |
| `timestamp_end` | query | `integer (int64)` |  | End of timestamp range in Unix timestamp (seconds since 1970-01-01) (inclusive) |
| `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 `amount_asc`, `amount_desc`, `block_number_asc`, `block_number_desc`, `timestamp_asc`, `timestamp_desc`, `action_asc`, `action_desc`, `alpha_asc`, `alpha_desc`, `usd_asc`, `usd_desc`, `alpha_price_in_tao_asc`, `alpha_price_in_tao_desc`, `alpha_price_in_usd_asc`, `alpha_price_in_usd_desc`, `netuid_asc`, `netuid_desc`, `slippage_asc`, `slippage_desc`, `fee_asc`, `fee_desc`. |

## Responses

### `200` — Delegations retrieved successfully

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | `array` | Yes |  |
| `data[].action` | `string` | Yes |  |
| `data[].alpha` | `string, nullable` |  |  |
| `data[].alpha_price_in_tao` | `string, nullable` |  |  |
| `data[].alpha_price_in_usd` | `string, nullable` |  |  |
| `data[].amount` | `string` | Yes |  |
| `data[].block_number` | `integer (int32)` | Yes |  |
| `data[].delegate` | `object` | Yes |  |
| `data[].delegate.hex` | `string` | Yes | The hex format of the hot key |
| `data[].delegate.ss58` | `string` | Yes | The SS58 format of the hot key |
| `data[].delegate_name` | `string, nullable` |  |  |
| `data[].extrinsic_id` | `string, nullable` |  |  |
| `data[].fee` | `string, nullable` |  |  |
| `data[].id` | `string` | Yes |  |
| `data[].is_transfer` | `boolean, nullable` |  |  |
| `data[].netuid` | `integer (int32), nullable` |  |  |
| `data[].nominator` | `object` | Yes |  |
| `data[].nominator.hex` | `string` | Yes | The hex format of the hot key |
| `data[].nominator.ss58` | `string` | Yes | The SS58 format of the hot key |
| `data[].slippage` | `string, nullable` |  |  |
| `data[].timestamp` | `string (date-time)` | Yes |  |
| `data[].transfer_address` | `object, nullable` |  |  |
| `data[].transfer_address.hex` | `string` | Yes | The hex format of the hot key |
| `data[].transfer_address.ss58` | `string` | Yes | The SS58 format of the hot key |
| `data[].usd` | `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": [
    {
      "balance": "262028445567403",
      "block_number": 4106750,
      "delegate": {
        "hex": "0xe4df2c7397e1443378b4cec0f2fca9dac1d0923d020e7aab11dd41428014ab59",
        "ss58": "5HEo565WAy4Dbq3Sv271SAi7syBSofyfhhwRNjFNSM2gP9M2"
      },
      "delegate_from": 252183,
      "delegate_from_timestamp": "2023-04-24T19:25:36.001Z",
      "nominator": {
        "hex": "0x0055a35aba61dfc8dd56c131302e98230bfdc2191c67bd300e651adaf44b4e20",
        "ss58": "5C59JBL8eYacZPeDA5LYCjTd7BKNHE44hG8hsE9DmkFwefMR"
      },
      "timestamp": "2024-10-23T14:55:36.004Z"
    },
    {
      "balance": "202513253736495",
      "block_number": 4106750,
      "delegate": {
        "hex": "0xac4ba7704623c5beb4950ef97ddea57c9c12b91938c86f28475f8050741ac956",
        "ss58": "5FxcZraZACr4L78jWkcYe3FHdiwiAUzrKLVtsSwkvFobBKqq"
      },
      "delegate_from": 3791750,
      "delegate_from_timestamp": "2024-09-09T20:14:48Z",
      "nominator": {
        "hex": "0x94d412dc09782a38b2dd3fef97b96b8245b1b96843559fe89592c88ed3bb6531",
        "ss58": "5FRqwexkxqXLg4frDhGKM6rCw2y32JWojQ6JV6zBgzhnhq7r"
      },
      "timestamp": "2024-10-23T14:55:36.004Z"
    }
  ],
  "pagination": {
    "current_page": 1,
    "next_page": 2,
    "per_page": 5,
    "prev_page": null,
    "total_items": 26986,
    "total_pages": 5398
  }
}
```

**Response details**

```text
 {
      "id": "finney-68-0x828e7eabc592c6d03c62ab0799cda1c0de0b8f57fb7d542deba479957a9dc573-0x96f0651155c3a50c68d6fbe4175f512627d6517140ce00ae495e8b4a81050815-5453624-140",
      "block_number": 5453624,
      "timestamp": "2025-04-28T23:18:24.001Z",
      "action": "DELEGATE", direction delegate or undelegate
      "nominator": {
        "ss58": "5FUcTAuTxS5iS7FyP3CwHee53m3mtYYTVS9hJukfZF5hC8KU",
        "hex": "0x96f0651155c3a50c68d6fbe4175f512627d6517140ce00ae495e8b4a81050815"
      },
      "delegate": {
        "ss58": "5F1tQr8K2VfBr2pG5MpAQf62n5xSAsjuCZheQUy82csaPavg",
        "hex": "0x828e7eabc592c6d03c62ab0799cda1c0de0b8f57fb7d542deba479957a9dc573"
      },
      "amount": "7092857", tao as rao
      "alpha": "135443860", alpha as rao
      "usd": "2.70", value in USD
      "alpha_price_in_tao": "0.05236750488357316456",
      "alpha_price_in_usd": "19.94",
      "netuid": 68,
      "extrinsic_id": "5453624-0032",
      "is_transfer": null,
      "transfer_address": null
    },
```

### Other responses

| Status | Meaning |
| --- | --- |
| `400` | Bad request |
| `404` | Delegations 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).
