# next-epoch-start-block (/docs/query/next-epoch-start-block)

Chain-computed: `LastEpochBlock + tempo`, pulled earlier by any pending
owner-triggered epoch. This is the source of truth — the epoch schedule is
stateful, so the legacy client-side modular formula is wrong on subnets
whose tempo changed or whose owner triggered an epoch.

**Category:** Epochs & timing

## Parameters [#parameters]

| Parameter | Type    | Description      |
| --------- | ------- | ---------------- |
| `netuid`  | integer | Subnet to query. |

## CLI [#cli]

```bash
btcli query next-epoch-start-block --netuid <integer> --json
```

## Python [#python]

```python
import bittensor as sub

async with sub.Client("finney") as client:
    result = await client.read("next_epoch_start_block", netuid=1)
```
