Recipe 22 of 65
HyperCore ↔ HyperEVM transfers of a user
Read the user's spotTransfer and send ledger events and keep the ones whose counterparty is a Hyperliquid system address, such as 0x2222…2222 for HYPE; the sign of amount_usd gives the direction.
GET /v1/hyperliquid/wallets/{address}/ledger answers it, filtered on your side. A move between HyperCore and
HyperEVM is a transfer to or from a system address, so it shows up as a spotTransfer or send row whose
counterparty is that system address: 0x2222…2222 for HYPE, and in this capture 0x2000…0000 for USDC. A positive
amount_usd arrived on HyperCore from HyperEVM; a negative one left HyperCore for HyperEVM. The full parameter list is
on Wallet ledger.
Quick answer
Read the user's spot transfers.
# the user's spot transfers, where the Core and EVM moves sit
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/wallets/0xbf49ffdc3008791900bb96ebccb61118f70c1bc9/ledger?event_type=spotTransfer&limit=5"Example response
Captured from the live API on 2026-10-24 at 17:17 UTC, trimmed to 3 of 5 rows.
The first row is HYPE worth $426.85 arriving on HyperCore from HyperEVM: counterparty 0x2222…2222, amount positive.
The third is $1,974 of USDC arriving the same way through 0x2000…0000. The second is an ordinary transfer from
another user, not a Core and EVM move.
{
"wallet": "0xbf49ffdc3008791900bb96ebccb61118f70c1bc9",
"items": [
{
"ts": "2026-10-10T17:41:23.018000+00:00",
"event_type": "spotTransfer",
"amount_usd": 426.845,
"fee": 0.0,
"token": "HYPE",
"counterparty": "0x2222222222222222222222222222222222222222",
"hash": "0x2dd0fb68ec2c0b7b2f4a044644fb4602010c004e872f2a4dd199a6bbab2fe565"
},
{
"ts": "2026-10-10T17:08:00.445000+00:00",
"event_type": "spotTransfer",
"amount_usd": 9097.890783,
"fee": 0.0,
"token": "USDC",
"counterparty": "0x6cd5661646289fb6e65ea5c032310fded797d0a2",
"hash": "0x61d3646e0ca791e9634d0446448d3c0106007c53a7aab0bb059c0fc0cbab6bd4"
},
{
"ts": "2026-09-01T19:18:47.089000+00:00",
"event_type": "spotTransfer",
"amount_usd": 1974.093818,
"fee": 0.0,
"token": "USDC",
"counterparty": "0x2000000000000000000000000000000000000000",
"hash": "0x9ad617e33e1ba3199c4f044378707b0201ba00c8d91ec1eb3e9ec335fd1f7d04"
}
],
"nextCursor": "eyJoIjoiMHhmOWY5YTY5ZDEyYjRjNzc4ZmI3MzA0M2FjNmM4ZWIwMjBkNjQwMDgyYWRiN2U2NGI5ZGMyNTFlZmQxYjhhMTYzIiwidCI6IjIwMjYtMDUtMDYgMTE6NTY6NTUuMDU0In0"
}Variations
Only the Core and EVM moves. Keep rows whose counterparty is the HYPE system address or matches the token system-address pattern: 0x20, zeros,
then the token index in the last hex digits.
# spot transfers to or from a system address, newest 1000
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/wallets/0xbf49ffdc3008791900bb96ebccb61118f70c1bc9/ledger?event_type=spotTransfer&limit=1000" \
| jq '[.items[] | select((.counterparty // "") | test("^0x(2{40}|20{35}[0-9a-f]{4})$"))] | map({ts, token, amount_usd, counterparty, direction: (if .amount_usd > 0 then "evm_to_core" else "core_to_evm" end)})'The send events too. Some moves to the system address are recorded as send rather than spotTransfer. Run the same filter on them.
# the user's send events, to filter the same way
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/wallets/0xbf49ffdc3008791900bb96ebccb61118f70c1bc9/ledger?event_type=send&limit=1000"The HyperEVM side. The same address's token and native transfers on HyperEVM.
# HyperEVM transfers of the same address over 90 days
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xbf49ffdc3008791900bb96ebccb61118f70c1bc9/transactions?chain=hyperevm&days=90&limit=100"Before you rely on it
No Core or EVM tag: you match the counterparty
The ledger has no field that says "bridge to HyperEVM"; the counterparty is the only signal, so match it exactly. A
loose 0x20 prefix also catches ordinary addresses: this wallet's ledger holds a transfer with 0x2077…e06a, which is
not a system address. A send can be recorded on one side only, so a move may be missing from the user's ledger.
amount_usd is the venue's USD value and can be 0 for a token with no price.
Ask your agent
Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words.
The hl_wallet_activity tool answers with view: ledger and event_type: spotTransfer, at 1 credit a call.
Has Hyperliquid wallet 0xbf49ffdc3008791900bb96ebccb61118f70c1bc9 moved HYPE or USDC between HyperCore and HyperEVM?