# Batch balances · API reference · Femtos

> Up to 100 addresses on HyperCore in one call, the same answer for each. POST /v1/balances/batch on Elysium, HyperCore 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://femtos.xyz/account/new (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/batch-balances

## Batch balances — POST `/v1/balances/batch`

- Elysium: Up to 100 addresses on Elysium in one call, the same answer for each.
- HyperCore: Up to 100 addresses on HyperCore in one call, the same answer for each.
- HyperEVM: Up to 100 addresses on HyperEVM in one call, the same answer for each.

Layers: Elysium, HyperCore, HyperEVM.
Page with live calls: https://femtos.xyz/reference/batch-balances?layer=<elysium|hypercore|hyperevm>

| Param | In | Example or values | Meaning |
|---|---|---|---|
| `addresses` | body | `<creator>,<owner>` (Elysium); `<address>,<creator>` (HyperCore); `<owner>,<address>` (HyperEVM) | Addresses (or named-wallet handles) |
| `layer` | body | `elysium` (Elysium); `hypercore` (HyperCore); `hyperevm` (HyperEVM) | Layer(s) read |
| `tokens` | body | (optional) | EVM token addresses (`native`) and HyperCore coin names, an array or a comma list |
| `minUsd` | body | `1` | Leave out holdings worth less (and unpriced ones) |

Elysium:

```bash
curl -X POST -H "Authorization: Bearer $FEMTOS_KEY" -H "Content-Type: application/json" "https://api.femtos.xyz/v1/balances/batch" \
  -d '{"addresses":["<creator>","<owner>"],"layer":"elysium","minUsd":1}'
```

HyperCore:

```bash
curl -X POST -H "Authorization: Bearer $FEMTOS_KEY" -H "Content-Type: application/json" "https://api.femtos.xyz/v1/balances/batch" \
  -d '{"addresses":["<address>","<creator>"],"layer":"hypercore","minUsd":1}'
```

HyperEVM:

```bash
curl -X POST -H "Authorization: Bearer $FEMTOS_KEY" -H "Content-Type: application/json" "https://api.femtos.xyz/v1/balances/batch" \
  -d '{"addresses":["<owner>","<address>"],"layer":"hyperevm","minUsd":1}'
```

| Field | Type | Meaning |
|---|---|---|
| `layer` | string | Layer(s) read |
| `count` | int | Addresses answered |
| `results[]` | object | One answer per distinct address, in the order asked: {address, layer, balances, count, total, totalUsd, totalUsdComplete, perp, layers, includeSpam, spamHidden, entity} |
| `billing` | heavy | one heavy unit per 20 addresses |

## Related (Balances)

- [Balances](https://femtos.xyz/reference/balances.md) `GET /v1/balances/{address}`: Every token an address holds on HyperCore, with USD value and the block it is read at. (Elysium, HyperCore, HyperEVM)
- [Token balance](https://femtos.xyz/reference/token-balance.md) `GET /v1/balances/{address}/{token}`: One token of one address on HyperCore: 0 when not held, now or at a past block. (Elysium, HyperCore, HyperEVM)
- [Balances, all layers](https://femtos.xyz/reference/balances-all.md) `GET /v1/balances/{address}`: One address on HyperCore, HyperEVM and Elysium in one list, with totals per layer. (Elysium, HyperCore, HyperEVM)

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