# Data freshness

## Live heads: about 2 seconds

The chain heads in [Live stats](https://docs.rarebl.com/api/stats/live) (tip, mempool, fee) are cached for **at most about 2 seconds**, and the reply says when each node was last asked (`checkedAt`). Polling it once every 2 seconds is as fresh as it gets.

| Data | Freshness |
| --- | --- |
| Chain heads, mempool size, standard fee ([Live stats](https://docs.rarebl.com/api/stats/live)) | up to about 2 s old |
| Mempool list ([Mempool](https://docs.rarebl.com/api/tx/mempool)) | about 3 s, shared between callers |
| Fees ([Recommended fees](https://docs.rarebl.com/api/fees/recommended)) | about 5 to 15 s |
| Chain list ([Chains](https://docs.rarebl.com/api/stats/chains)) | about 10 s |
| Blocks, transactions and addresses deeper than the reorg depth | stable, cacheable for long |

## Confirmations

`confirmations` is the number of blocks on top of the transaction's block, counting that block. It is 0 while pending. It grows as new blocks arrive, so recompute or re-fetch rather than storing it.

## Reorg depth

Data more than the **reorg depth** below the chain tip is treated as settled and cached for long. The depths in use are:

| Chain | Reorg depth (blocks) |
| --- | --- |
| BTC, LTC, BCH, DASH | 6 |
| ETH | 64 |
| TRON | 20 |

A transaction with fewer confirmations than this can still move to another block, or disappear, in a chain reorganisation. As guidance, wait for at least the reorg depth of your chain before you treat a payment as final. The decision is yours; the table only tells you what the API considers settled.

## Chain health

A chain can be `ok`, `lagging` or `down` in [Chains](https://docs.rarebl.com/api/stats/chains) and [Live stats](https://docs.rarebl.com/api/stats/live). While a node is syncing, its `tip` is `null` and the chain is `lagging`. A node that does not answer is `down`, and calls for it answer `API502`. One slow node never delays the others.

## Be kind to the tip

Fetch what you need when the head changes instead of polling every endpoint. A simple pattern: poll [Live stats](https://docs.rarebl.com/api/stats/live) every 2 seconds, compare `tip.hash` for your chain, and call other endpoints only when it changes.
