API reference · Chain & reference
Freshness
Head and lag of each layer, measured now.
GET https://api.femtos.xyz/v1/status
Example
Elysium, HyperCore, HyperEVM
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/status"Key: Authorization: Bearer $FEMTOS_KEY. Get a free key, or with no browser through agent onboarding.
Response fields
| Field | Type | Meaning |
|---|---|---|
layers.hypercore | object | {state: live|stale, head, headTime, lagMs} |
layers.hyperevm | object | {state: syncing|live, head, headTime, lagMs, chainHead?, blocksBehind?, behindMs?, clock?, reason?}: indexed head of indexer_hyperevm vs nanoreth's head (> 300 blocks behind = syncing; without a node feed, headTime older than 5 min = syncing). chainHead, blocksBehind, behindMs, clock: freshness against the node's own head, pushed by newHeads: blocksBehind 0 and behindMs 0 = every block the node announced is indexed; else behindMs = how long block head+1 has been waiting since the node announced it (clock node), or since its block time when our feed did not see it (clock block). Absent without a live node feed |
layers.elysium | object | {state, network: mainnet, head, headTime, lagMs, chainHead?, blocksBehind?, behindMs?, clock?}: lagMs = now - block time (whole seconds). Elysium mainnet makes no empty block and can go minutes without one: lagMs then grows while state stays live and behindMs 0 (every block the node announced is indexed); how far behind = behindMs, not lagMs. chainHead, blocksBehind, behindMs, clock: freshness against the node's own head, pushed by newHeads: blocksBehind 0 and behindMs 0 = every block the node announced is indexed; else behindMs = how long block head+1 has been waiting since the node announced it (clock node), or since its block time when our feed did not see it (clock block). Absent without a live node feed |
stream | object | {connected, lagMs, messages, clients, subscriptions, slowClientsDropped} |
flows | object | {connected, lagMs, messages} |
bridges | object | {state: ok|loading, source: materialized|views, settledUntil, lagMs, computedAt, evm_to_core, core_to_evm: {legs, matched, coverage, unmatched: {<reason>: n}, p50Ms, p99Ms}}: HyperCore <> HyperEVM matching over the whole history, as GET /api/bridges/coverage (last computed value, refreshed in the background) |
serverTime | ms | Server time |
Related: Chain & reference
- Blocks stream WS elysium.blocks · hyperevm.blocks Elysium, HyperEVM
Each new HyperEVM block header, small and big blocks, from our node. - Transaction GET /v1/tx/{hash} Elysium, HyperEVM
One transaction: status, gas, decoded transfers, swaps and liquidity, bridge legs and journey. - Elysium RPC POST /v1/elysium/rpc Elysium
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. - Stream stats WS stats HyperCore
Our HyperCore stream health, once a second. - Check your key GET /v1/whoami Elysium, HyperCore, HyperEVM
Answers the name your key is registered under, its tier, billing state and the limits in force. - OpenAPI document GET /v1/openapi.json Elysium, HyperCore, HyperEVM
The OpenAPI 3.1 contract of every REST call, public.
More
- This page as Markdown
- The whole API reference
- What Elysium serves
- What HyperCore serves
- What HyperEVM serves
- The whole API in one Markdown file
- OpenAPI 3.1 document
Agent guide (agents.md)llms.txtOpenAPIMCP serverGet an API keyChangelog