# Check your key · API reference · Femtos

> Answers the name your key is registered under, its tier, billing state and the limits in force. GET /v1/whoami 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/whoami

## Check your key — GET `/v1/whoami`

Answers the name your key is registered under, its tier, billing state and the limits in force.

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

Elysium, HyperCore, HyperEVM:

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/whoami"
```

| Field | Type | Meaning |
|---|---|---|
| `key` | string \| null | Name the key is registered under (never the key itself) |
| `tier` | free \| builder \| pro \| scale \| enterprise \| partner \| null | null: internal key |
| `billing` | ok \| exhausted \| capped \| exhausted_nofree \| capped_nofree \| debt \| unknown \| null | exhausted / capped: the key runs at the free tier limits, heavy calls answer 402 (no credits left; the monthly spending cap reached). exhausted_nofree / capped_nofree: the same for an account created by an x402 payment, which has no free tier: every metered call answers 402, no WebSocket. debt: the account owes a debt (plan overage past its float, or a payment taken back) that must be paid in full first: every call but status and whoami answers 402 naming the amount (debtUsd) on every API, no WebSocket, no webhook delivery, until it is paid in full (a partial payment lifts nothing). unknown: a state this server does not know, refused the same way. null: internal key |
| `limits` | object \| null | Limits in force (the free row while billing is exhausted / capped); null: no limit (internal key): {rps, burst, maxConns} |

## Related (Chain & reference)

- [Freshness](https://femtos.xyz/reference/status.md) `GET /v1/status`: Head and lag of each layer, measured now. (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)
- [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)
- [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
