API reference, Bridges & wallets

Wallet list stream

Every event of the three layers touching any of up to 100 addresses, in one subscription, each event tagged with its address.

WebSocket channel wallets on wss://api.femtos.xyz/v1/ws

Parameters

ParamInExample or valuesMeaning
addressesfilter<address>,<creator>The addresses to follow: 1 to 100, 0x or named wallets' handles, a JSON array or one string of them comma-separated (any case, duplicates dropped); at most 500 over a connection's `wallets` subscriptions
channelfilter(optional)Kinds to keep, for every address: a JSON array, or one string of them comma-separated (`channels` is the same field): hc.trades, hc.orders, hc.ledger, hc.liquidations, hc.positions, bridge.transfers, elysium.trades, elysium.bridge, hyperevm.trades, hyperevm.transfers, elysium.transfers, hc.account, sandwiched
include_spamfilter(empty), truetrue: also the HyperEVM / Elysium swaps and transfers of spam tokens (flagged `spam`), left out by default

Subscribe

Elysium, HyperCore, HyperEVM

{"op":"subscribe","channel":"wallets","filter":{"addresses":"<address>,<creator>"}}

Key: Authorization: Bearer $FEMTOS_KEY. Get a free key, or with no browser through agent onboarding.

Response fields

FieldTypeMeaning
snapshot: trueWalletsEvent[]one snapshot frame per address, its `wallet` snapshot (last 50 events, oldest first), each event with its `address`; each counts as one GET /v1/wallet/{address} call: a list of 100 addresses is 100 calls
dataWalletsEventone event of an address of the list, as the `wallet` channel sends it, with its `address`. Every frame (snapshot, events, `gap`, an error of one address) names its address in `filter`: that address's own `wallet` filter (`{address, channel, include_spam}`), never the list. One frame per event; `"batch":"block"`: one frame per address and block: {address, channel, data}
data.addressstringThe address of the list the event belongs to: 0x address, or a named wallet's handle
filterobjecton every frame: the address it is about, as that address's `wallet` filter (`{address, channel, include_spam}`), never the list
limitsstring100 addresses per subscription, 500 per connection (over its `wallets` subscriptions); a subscription counts once toward the connection's subscriptions.
status"gap"a frame of its own: events of those blocks will not come on this subscription (`from_block`, `to_block`, `from_time`, `to_time`, `channels`, `reason`). Not billed
billingmediumthe snapshot a subscribe asks for counts as GET /v1/wallet/{address} (medium); every other frame by its bytes (1 credit per 48 KiB)

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.
  • HyperCore account GET /v1/hypercore/wallet/{address} HyperCore
    One address's HyperCore account: perp value and margin, positions, spot balances.
  • Wallet open orders GET /v1/hypercore/wallet/{address}/orders HyperCore
    One wallet's open orders: resting limit orders and trigger orders, on the main dex and every HIP-3 dex.
  • Wallet order history GET /v1/hypercore/wallet/{address}/orders/history HyperCore
    One wallet's orders that left the book, newest first: how (filled, canceled, rejected) and why, the size filled and its average price.
  • Wallet fills GET /v1/hypercore/wallet/{address}/fills HyperCore
    One wallet's HyperCore fills, newest first, with closed PnL, fees and the position before each.
  • Wallet fills per bar GET /v1/hypercore/wallet/{address}/fills/bars HyperCore
    One wallet's fills on one market summed per bar: buys and sells with their average price, and the position after each bar.
  • Wallet funding GET /v1/hypercore/wallet/{address}/funding HyperCore
    One wallet's funding payments, newest first: paid or received per perp and hour, with the position and the rate.
  • 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.
  • Wallet PnL GET /v1/wallet/{address}/pnl Elysium, HyperEVM
    Any wallet on HyperEVM: per token balance, cost basis, realized and unrealized PnL, with 1d / 7d / 30d / all totals and win rate.
  • Portfolio value history GET /v1/wallet/{address}/value Elysium, HyperEVM
    Any address on HyperEVM: its total USD value per 5 min (1d), hour (7d) or day (30d, all).
  • Wallet PnL curve GET /v1/hypercore/wallet/{address}/pnl HyperCore
    One HyperCore wallet's PnL per hour or day: realized, fees, funding, net and cumulative, and its account value.
  • Wallet PnL stream WS pnl Elysium, HyperEVM
    A wallet's positions and PnL on HyperEVM (GET /v1/wallet/{address}/pnl), pushed on subscribe, then the positions each block changes.
  • Was I sandwiched? GET /v1/wallet/{address}/mev Elysium
    Every sandwich of a wallet’s swaps on Elysium: the bot, its two transactions, what the wallet lost. Free, no key.
  • Ledger stream WS hc.ledger HyperCore
    Deposits, withdrawals, transfers and other non-trade balance moves.
  • Bridge movements GET /v1/bridges Elysium, HyperCore, HyperEVM
    Matched HyperCore ↔ HyperEVM transfers with 24 h stats.
  • Bridge stream WS elysium.bridge | bridge.transfers Elysium, HyperCore, HyperEVM
    Each HyperCore ↔ HyperEVM transfer, initiated then completed.
  • Bridge movements stream WS bridges.recent Elysium, HyperCore, HyperEVM
    The GET /v1/bridges answer (movements newest first, 24 h stats), pushed on subscribe, then when a movement of the route changes state.
  • 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

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