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

FieldTypeMeaning
layers.hypercoreobject{state: live|stale, head, headTime, lagMs}
layers.hyperevmobject{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.elysiumobject{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
streamobject{connected, lagMs, messages, clients, subscriptions, slowClientsDropped}
flowsobject{connected, lagMs, messages}
bridgesobject{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)
serverTimemsServer 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

Agent guide (agents.md)llms.txtOpenAPIMCP serverGet an API keyChangelog