API reference · Bridges & wallets
Bridge movements
- Elysium: HyperEVM ↔ Elysium movements with 24 h stats.
- HyperCore: Matched HyperCore ↔ HyperEVM transfers with 24 h stats.
- HyperEVM: HyperCore ↔ HyperEVM transfers (core_evm) or HyperEVM ↔ Elysium movements (evm_elysium), with 24 h stats.
GET https://api.femtos.xyz/v1/bridges
Parameters
| Param | In | Example or values | Meaning |
|---|---|---|---|
route | query | (empty), evm_elysium, core_evm (Elysium, HyperCore); core_evm, evm_elysium (HyperEVM) | Bridge |
direction | query | (empty), to_child, to_parent (Elysium); (empty), evm_to_core, core_to_evm (HyperCore); (empty), to_child, to_parent, evm_to_core, core_to_evm (HyperEVM) | Direction |
token | query | (optional) | Token address (`hype` for native HYPE) |
account | query | (optional) | Sender or recipient |
system | query | (empty), exclude, include, only | Kinetiq system retryables (evm_elysium) (Elysium) |
limit | query | 50 | Rows |
includeSpam | query | (empty), true | evm_elysium: rows of spam parent tokens (HyperEVM tokens.spam), left out by default (HyperEVM) |
Example
Elysium
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/bridges?route=evm_elysium&limit=50"HyperCore, HyperEVM
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/bridges?route=core_evm&limit=50"Key: Authorization: Bearer $FEMTOS_KEY. Get a free key, or with no browser through agent onboarding.
Response fields
| Field | Type | Meaning |
|---|---|---|
rows[] | object | Newest first, ≤ 7 days: CoreEvmTransfer (core_evm) or OrbitTransfer (evm_elysium): {status, direction, token, account, system_address, amount, core, evm, matched_by, bridge_latency_ms, depositor, beneficiary, …} |
rows[].bridge_latency_ms | int | null | First leg -> credited on the other layer (ms) |
stats | object | 24 h: {window, count, completed, pending, claimable, stuck, latencyMs:{p50,p99}, byDirection, byToken, otherTokens}; core_evm evm_to_core also counts forwarded (deposit wallets) and cctp; evm_elysium with system=exclude: system {count, completed, pending, claimable, stuck, byDirection} |
system | exclude | include | only | evm_elysium: the system mode applied to Kinetiq's system retryables (exclude: left out of rows, counted in stats.system) (Elysium) |
tokens | object | evm_elysium: {<address>: {symbol, decimals, spam, spamReason}} (parent tokens flagged from HyperEVM) (Elysium, HyperEVM) |
labels.<key> | object | Names of known addresses the rows may carry: {<address>: name} (Circle CctpForwarder: the depositor of every CCTP mint, the real sender being origin.sender; evm_elysium adds Kinetiq's system senders and contracts) |
billing | heavy | heavy |
rows[].matched_by | nonce | order | null | How the two legs were paired: nonce = exact (coreReceiveWithData), order = same system address, account and amount in order; null while unmatched (HyperCore, HyperEVM) |
rows[].final_latency_ms | int | null | evm_to_core: HyperEVM leg -> beneficiary credited on HyperCore (ms); null until then (HyperCore, HyperEVM) |
rows[].forwarding | object | null | evm_to_core through a deposit wallet that forwards the deposit by CoreWriter sendAsset: {amount (token units sent on), dex (destination dex: 0 = main perp dex)}; null otherwise (HyperCore, HyperEVM) |
rows[].beneficiary | string | null | Who is finally credited: `account`, except a deposit forwarded by a deposit wallet (Circle's CoreDepositWallet: its recipient); null for a CCTP withdrawal (core_to_evm coreReceiveWithData: the funds leave HyperEVM) or while not resolved (HyperCore, HyperEVM) |
rows[].depositor | string | null | Who paid on the first layer: `account`, except through a deposit wallet (the sender of the underlying into the wallet); null while a deposit wallet leg is not resolved yet (HyperCore, HyperEVM) |
rows[].origin | object | null | CCTP mint: {domain (source chain, see cctpDomains), sender (burn sender: an address on EVM chains, 32 bytes otherwise)} (HyperCore, HyperEVM) |
rows[].final | object | null | evm_to_core: the HyperCore event crediting the beneficiary (the wallet's send for a forwarded deposit, the bridge credit otherwise): {block, event_idx, time, hash, kind, nonce} (HyperCore, HyperEVM) |
cctpDomains.<key> | object | core_evm: CCTP source domains (Circle's numbering) -> chain name, for origin.domain; others read `domain <n>` (HyperCore, HyperEVM) |
coverageFrom | object | null | core_evm: {evm_to_core, core_to_evm}: first block time (ms) each direction is scanned on HyperEVM; rows and stats start there (HyperEVM) |
includeSpam | boolean | evm_elysium: rows of spam tokens shown (HyperEVM) |
spamHidden | int | evm_elysium: rows of spam tokens left out (HyperEVM) |
Related: Bridges & wallets
- Cross-layer wallet GET /v1/wallet/{address} Elysium, HyperCore, HyperEVM
One address (or a named wallet's handle) on HyperCore, HyperEVM and Elysium, plus its latest events. - Wallet stream WS wallet Elysium, HyperCore, HyperEVM
Every event of the three layers touching one address. - Swaps by wallet GET /v1/trades Elysium, HyperEVM
Every swap a wallet sent (or a pool’s, a token’s), newest first, filterable by token, side, size and time. - Transfers by wallet GET /v1/transfers Elysium, HyperEVM
ERC-20 transfers sent and received by a wallet, newest first, filterable by token, direction, size and time. - Ledger stream WS hc.ledger HyperCore
Deposits, withdrawals, transfers and other non-trade balance moves. - Bridge stream WS elysium.bridge · bridge.transfers Elysium, HyperCore, HyperEVM
Each HyperCore ↔ HyperEVM transfer, initiated then completed. - Bridge coverage GET /v1/bridges/coverage HyperCore, HyperEVM
Every HyperCore ↔ HyperEVM leg since our data starts, paired with its other leg: matched share per direction and token, why the others are not, latency.
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