# Bridge movements · API reference · Femtos

> Matched HyperCore ↔ HyperEVM transfers with 24 h stats. GET /v1/bridges 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/bridge

## Bridge movements — GET `/v1/bridges`

- 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.

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

| 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) |

Elysium:

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/bridges?route=evm_elysium&limit=50"
```

HyperCore, HyperEVM:

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/bridges?route=core_evm&limit=50"
```

| 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](https://femtos.xyz/reference/wallet.md) `GET /v1/wallet/{address}`: One address (or a named wallet's handle) on HyperCore, HyperEVM and Elysium, plus its latest events. (Elysium, HyperCore, HyperEVM)
- [Wallet stream](https://femtos.xyz/reference/ws/wallet.md) `WS wallet`: Every event of the three layers touching one address. (Elysium, HyperCore, HyperEVM)
- [Swaps by wallet](https://femtos.xyz/reference/wallet-trades.md) `GET /v1/trades`: Every swap a wallet sent (or a pool’s, a token’s), newest first, filterable by token, side, size and time. (Elysium, HyperEVM)
- [Transfers by wallet](https://femtos.xyz/reference/wallet-transfers.md) `GET /v1/transfers`: ERC-20 transfers sent and received by a wallet, newest first, filterable by token, direction, size and time. (Elysium, HyperEVM)
- [Ledger stream](https://femtos.xyz/reference/ws/ledger.md) `WS hc.ledger`: Deposits, withdrawals, transfers and other non-trade balance moves. (HyperCore)
- [Bridge stream](https://femtos.xyz/reference/ws/bridge.md) `WS elysium.bridge · bridge.transfers`: Each HyperCore ↔ HyperEVM transfer, initiated then completed. (Elysium, HyperCore, HyperEVM)
- [Bridge coverage](https://femtos.xyz/reference/bridge-coverage.md) `GET /v1/bridges/coverage`: 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. (HyperCore, HyperEVM)

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