API reference, Bridges & wallets

Was I sandwiched?

Every sandwich of a wallet’s swaps on Elysium: the bot, its two transactions, what the wallet lost. Free, no key.

  • Elysium
  • HyperCore: not served
  • HyperEVM: not served
  • Not on HyperCore: HyperCore trades on its order book, not on pools: no pool swap to sandwich there
  • Not on HyperEVM: MEV is detected on Elysium first: HyperEVM next, with the same answers

GET https://api.femtos.xyz/v1/wallet/{address}/mev

Parameters

ParamInExample or valuesMeaning
addresspath0xdf48383ed60bd6ea38aaf16051eccd83d07c23afThe wallet: 0x address, or a named wallet's handle
layerqueryelysiumLayer (elysium; hyperevm later)
confidencequery(empty), strict, probable, surestrict or probable: that shape only; sure: strict, or by a known sandwich bot (the `sure` rows); absent: all
limitquery20Rows
cursorquery(optional)Next page: `next_cursor` of the previous answer

Example

curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/wallet/0xdf48383ed60bd6ea38aaf16051eccd83d07c23af/mev?layer=elysium&limit=20"

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

Response fields

FieldTypeMeaning
totalobjectEvery sandwich of the address (of `confidence` when given): {sandwiches, lossUsd, victimUsd}
sandwiches[]objectNewest first: {id, layer, confidence, sure, time, block, victimTx, frontTx, frontBlock, backTx, backBlock, pool, …}
sandwiches[].confidencestrict | probableThe shape. strict: front-run in the victim's block, back-run in the next; probable: any other spacing up to 120 blocks
sandwiches[].botstringBot: the sender of the back-run (the front-run's, or another address sending through the same bot contract): 0x address, or a named wallet's handle
sandwiches[].lossUsddecimal | nullThe victim's loss, USD: its share of the bot's profit (negative: the bot lost); null when unpriced
sandwiches[].botProfitobjectThe whole sandwich's profit (every victim's row repeats it): {token, amount, usd}
sandwiches[].frontTxstringFront-run transaction (the bot's first swap)
sandwiches[].backTxstringBack-run transaction (the bot's swap back)
next_cursorstring | nullOpaque cursor of the next page: pass it as `cursor`, unchanged. null on the last page

Next page: cursor = the next_cursor of the previous answer, the same on every list (pagination).

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