# Gas tracker | API reference | Femtos

> Every HyperEVM block's base fee, gas used and tips over 1h to 7d, with stats and the latest block. GET /v1/gas on Elysium and HyperEVM: parameters, response fields and a live call per layer.

- Base URL: `https://api.femtos.xyz/v1` (REST) · `wss://api.femtos.xyz/v1/ws` (WebSocket) · MCP: `https://api.femtos.xyz/mcp`
- Auth: `Authorization: Bearer $FEMTOS_KEY`. Free key: https://dashboard.femtos.xyz/signup (browser), or with
  no browser: `GET https://femtos.xyz/accounts/agent/challenge`, solve its proof of work, then `POST https://femtos.xyz/accounts/agent/signup`
  (https://femtos.xyz/agents.md#agent-onboarding)
- Decimals are exact strings, times Unix milliseconds, addresses lowercase `0x`
- Whole API in one file: https://femtos.xyz/agents.md · OpenAPI: https://api.femtos.xyz/v1/openapi.json · Index: https://femtos.xyz/llms.txt
- Page with live calls: https://femtos.xyz/reference/gas

## Gas tracker — GET `/v1/gas`

- Elysium: Every Elysium block's base fee, gas used and tips over 1h to 7d, with stats and the latest block.
- HyperEVM: Every HyperEVM block's base fee, gas used and tips over 1h to 7d, with stats and the latest block.

Layers: Elysium, HyperEVM. Not on HyperCore: HyperCore has no gas: its actions pay fixed exchange fees (POST /info userFees).
Page with live calls: https://femtos.xyz/reference/gas?layer=<elysium|hyperevm>

| Param | In | Example or values | Meaning |
|---|---|---|---|
| `layer` | query | `elysium` (Elysium); `hyperevm` (HyperEVM) | EVM layer |
| `window` | query | `(empty)`, `1h`, `6h`, `24h`, `7d` | Window ending now: 1h, 6h, 24h or 7d |
| `resolution` | query | `(empty)`, `block`, `10s`, `1m`, `5m`, `15m`, `1h` | block, 10s, 1m, 5m, 15m or 1h; default auto (every block up to 25000 per series) |

Elysium:

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/gas?layer=elysium&window=1h&resolution=5m"
```

HyperEVM:

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/gas?layer=hyperevm&window=1h&resolution=5m"
```

| Field | Type | Meaning |
|---|---|---|
| `series[]` | object | HyperEVM: small then big blocks; Elysium: one series: {kind, resolution, blocks, stats, latest, points} |
| `series[].kind` | small \| big \| block | small / big: HyperEVM's two block kinds, each with its own base fee and mempool (small: 3M gas, about one a second; big: 30M gas, about one a minute; a gas limit above 10M is big); block: Elysium's one kind |
| `series[].resolution` | block \| 10s \| 1m \| 5m \| 15m \| 1h | block: one point per block; else buckets of that span (UTC-aligned) |
| `series[].stats` | object | The window at block precision: {baseFee, tipP50, tipP90, gasUsed, txs, utilization} |
| `series[].latest` | object \| null | The newest block of this kind (in or before the window): {block, time, kind, baseFee, gasUsed, gasLimit, txs, tipP50, tipP90} |
| `series[].points` | object | The series as columns: index i of each array is one point, oldest first: {time, block, blocks, baseFee, baseFeeMin, baseFeeMax, gasUsed, gasLimit, txs, tipP50, tipP90} |
| `head` | object \| null | The newest block the tracker holds; null before the first: {block, time} |
| `tipsFrom` | int \| null | Oldest block from which every block has its tips (the history's are read from the node, newest first, after a restart); null before the first |

## Related (Chain & reference)

- [Freshness](https://femtos.xyz/reference/status.md) `GET /v1/status`: Head and lag of each layer, measured now. (Elysium, HyperCore, HyperEVM)
- [Freshness stream](https://femtos.xyz/reference/ws/status.md) `WS status`: The GET /v1/status answer (head and lag of each layer, live feeds), pushed whole on subscribe and at most once a second when it changes. (Elysium, HyperCore, HyperEVM)
- [Blocks stream](https://femtos.xyz/reference/ws/blocks.md) `WS elysium.blocks | hyperevm.blocks`: Each new HyperEVM block header, small and big blocks, from our node. (Elysium, HyperEVM)
- [Gas stream](https://femtos.xyz/reference/ws/gas.md) `WS elysium.gas | hyperevm.gas`: Each new HyperEVM block's base fee, gas used and tips, from our node; the history is GET /v1/gas. (Elysium, HyperEVM)
- [Block](https://femtos.xyz/reference/block.md) `GET /v1/blocks/{number}`: One HyperEVM block and every transaction in it: who called what, swaps, gas and fees. (Elysium, HyperEVM)
- [Transaction](https://femtos.xyz/reference/tx.md) `GET /v1/tx/{hash}`: One transaction: status, gas, decoded transfers, swaps and liquidity, bridge legs and journey. (Elysium, HyperEVM)
- [Elysium RPC](https://femtos.xyz/reference/rpc.md) `POST /v1/elysium/rpc`: Free public Elysium mainnet RPC by Femtos (chain 99901), no key, read only (no transaction sending), for wallets and dapps, not for indexing (use the Femtos API for history): per IP 5 requests a second and 60 a minute, batches of 5, eth_getLogs over 1,000 blocks at most, state of the last 128 blocks only. (Elysium)
- [Stream stats](https://femtos.xyz/reference/ws/stats.md) `WS stats`: Our HyperCore stream health, once a second. (HyperCore)
- [Check your key](https://femtos.xyz/reference/whoami.md) `GET /v1/whoami`: Answers the name your key is registered under, its tier, billing state and the limits in force. (Elysium, HyperCore, HyperEVM)
- [OpenAPI document](https://femtos.xyz/reference/openapi.md) `GET /v1/openapi.json`: The OpenAPI 3.1 contract of every REST call, public. (Elysium, HyperCore, HyperEVM)

Every page: https://femtos.xyz/reference.md
