# Get Accounts Address

Single account detail with 24hr-ago comparison.

_Source: https://beta.taostats.io/docs/new/accounts/get-accounts-address_

_Last reviewed: 2026-10-07_

```http
GET https://api.taostats.io/v1/accounts/{address}
```

Requires an API key in the `Authorization` header.

Single account detail with 24hr-ago comparison. Returns a single-element `data` array (no pagination). A valid address with no stored row gets a zero row, except a protocol account, which gets a 404 (see [`unseen_account_detail`]).

## Try it

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

### Code samples

**cURL**

```bash
curl -H "Authorization: <YOUR_API_KEY>" \
  "https://api.taostats.io/v1/accounts/{address}"
```

**JavaScript**

```js
const response = await fetch('https://api.taostats.io/v1/accounts/{address}', {
  headers: {
    Authorization: '<YOUR_API_KEY>',
  },
});
const data = await response.json();
```

**Python**

```python
import requests

response = requests.get(
    "https://api.taostats.io/v1/accounts/{address}",
    headers={"Authorization": "<YOUR_API_KEY>"},
)
data = response.json()
```

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `address` | path | `string` | Yes | SS58 or 0x-hex account address |

## Responses

### `200` — Account detail

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | `array` | Yes |  |
| `data[].address` | `string` | Yes | SS58 address. |
| `data[].alpha_balances` | `array, nullable` | Yes | Per-subnet alpha positions, read live from chain. `null` when the live read is unavailable (chain unconfigured or read failed), or for an address with no stored row, whose positions are not known (#1304). |
| `data[].alpha_balances[].balance` | `string` | Yes | Alpha balance (RAO, u64 as string). |
| `data[].alpha_balances[].balance_as_tao` | `string` | Yes | Alpha as TAO equivalent (RAO, u64 as string). |
| `data[].alpha_balances[].coldkey` | `string` | Yes | Coldkey (SS58). |
| `data[].alpha_balances[].hotkey` | `string` | Yes | Validator hotkey (SS58). |
| `data[].alpha_balances[].netuid` | `integer (int32)` | Yes | Subnet ID. |
| `data[].alpha_balances_24hr_ago` | `array, nullable` | Yes | Per-subnet alpha positions 24hr ago (chain @ `head − 7200`, priced from `subnet_pool_v1`). `null` if the 24h-ago read is unavailable, or for an address with no stored row (#1304). |
| `data[].alpha_balances_24hr_ago[].balance` | `string` | Yes | Alpha balance (RAO, u64 as string). |
| `data[].alpha_balances_24hr_ago[].balance_as_tao` | `string` | Yes | Alpha as TAO equivalent (RAO, u64 as string). |
| `data[].alpha_balances_24hr_ago[].coldkey` | `string` | Yes | Coldkey (SS58). |
| `data[].alpha_balances_24hr_ago[].hotkey` | `string` | Yes | Validator hotkey (SS58). |
| `data[].alpha_balances_24hr_ago[].netuid` | `integer (int32)` | Yes | Subnet ID. |
| `data[].balance_free` | `string` | Yes | Free balance (RAO, u64 as string). |
| `data[].balance_free_24hr_ago` | `string, nullable` | Yes | Free balance 24hr ago (RAO, u64 as string), read from chain at block `head − 7200`. `null` only if the 24h-ago read is unavailable (see [`account_detail`]). For an address with no stored row, this and every other `*_24hr_ago` balance is `"0"` from the snapshot, not the chain (see [`unseen_account_detail`]). |
| `data[].balance_reserved` | `string` | Yes | Reserved balance (RAO, u64 as string). |
| `data[].balance_reserved_24hr_ago` | `string, nullable` | Yes | Reserved balance 24hr ago (RAO, u64 as string). |
| `data[].balance_staked` | `string` | Yes | Total staked (RAO, u64 as string). |
| `data[].balance_staked_24hr_ago` | `string, nullable` | Yes | Total staked 24hr ago (RAO, u64 as string). |
| `data[].balance_staked_alpha_as_tao` | `string` | Yes | Alpha-staked as TAO equivalent (RAO, u64 as string). |
| `data[].balance_staked_alpha_as_tao_24hr_ago` | `string, nullable` | Yes | Alpha-staked as TAO 24hr ago (RAO, u64 as string). |
| `data[].balance_staked_root` | `string` | Yes | Root-staked (RAO, u64 as string). |
| `data[].balance_staked_root_24hr_ago` | `string, nullable` | Yes | Root-staked 24hr ago (RAO, u64 as string). |
| `data[].balance_total` | `string` | Yes | Total balance (RAO, u64 as string). |
| `data[].balance_total_24hr_ago` | `string, nullable` | Yes | Total balance 24hr ago (RAO, u64 as string). |
| `data[].block_number` | `integer (int32)` | Yes | Block number. |
| `data[].coldkey_swap` | `object, nullable` | Yes | The executed coldkey swap this account was involved in, as the old or the new coldkey, from `coldkey_swap_v1`. `null` if it was never swapped. |
| `data[].coldkey_swap.block_number` | `integer (int32)` | Yes | Swap block. |
| `data[].coldkey_swap.network` | `string` | Yes | Network. |
| `data[].coldkey_swap.new_coldkey` | `string` | Yes | New coldkey (SS58). |
| `data[].coldkey_swap.old_coldkey` | `string` | Yes | Old coldkey (SS58). |
| `data[].coldkey_swap.timestamp` | `string` | Yes | Swap time (ISO 8601). |
| `data[].created_on_date` | `string, nullable` | Yes | Account creation date (YYYY-MM-DD) from `account_created_at_v1`. `null` only when the account has no created-at row. |
| `data[].created_on_network` | `string, nullable` | Yes | Network the account was created on (from `account_created_at_v1`). `null` only when the account has no created-at row. |
| `data[].network` | `string` | Yes | Network name. Always `"finney"`. |
| `data[].rank` | `integer (int32)` | Yes | Leaderboard rank. |
| `data[].root_basket_claimable_tao` | `string, nullable` | Yes | TAO this coldkey could realize **right now** by redeeming its root beta-basket shares across every validator it stakes to (RAO, u64 as string) — read live from the chain's own `BetaBasketRuntimeApi::get_root_basket_owed`, at the same finalized head as the balances above. `null` means **unknown**, never zero: no chain client, the live read failed, the runtime predates Root Reborn (the API does not exist below release 450), or the address has no stored row (#1304). A coldkey that genuinely has nothing owed returns `"0"`. The daily historical series is on `/v1/accounts/{address}/history`, computed by the indexer rather than read live. **Not part of `balance_total`** — it is an entitlement held by the funds, not a balance the coldkey holds. |
| `data[].root_claim_type` | `string, nullable` | Yes | Always `null`: the root-claim preference was deleted from the chain at spec 441 and is no longer served (#774, see module docs). |
| `data[].timestamp` | `string` | Yes | ISO 8601 timestamp. |

### `400` — Invalid address

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

### `404` — A protocol account (subnet reserve and other pallet accounts), which the snapshot leaves out

| 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](https://beta.taostats.io/docs/start-here/getting-started-with-taostats-api).
