/wallets/{address}/first-funder
The earliest inbound native-coin transfer and the earliest inbound priced token transfer of a wallet, with the sender, its label and the amounts.
GET https://data.vike.io/v1/onchain/wallets/{address}/first-funderThe earliest inbound transfers of a wallet, as two separate answers: first_native_in, the first plain
send of the chain's coin (ETH, BNB or HYPE) of at least min_native whole coins, and first_token_in,
the first token transfer priced at min_usd dollars or more. Each carries the sender (from), the
sender's label, wallet_type and label_confidence, the time, tx_hash and block, and the amounts.
amount is in whole coins (native) or whole tokens (token), amount_wei is the exact native amount as a
string, and amount_usd is plain dollars, null where we hold no price and never 0.
The first inbound we hold, not proof of who funded the wallet
Native rows hold top-level sends only, so coin moved by a contract call, a bridge relay or a batch payout
is absent and the real first funding can be earlier. The sender may be an exchange or a relay. History
starts on a different date per chain and the response says which: coverage.history_from. A wallet with
no inbound that clears the floors returns found: false with both sides null, not zeros.
min_native defaults to 0.0001 coin so that a probing dust send is not reported as the funder (the
first inbound to one wallet on base was 0.0000008 ETH); pass min_native=0 for the very first inbound
whatever its size. min_usd defaults to 1, which skips tokens we hold no price for, mostly spam
airdrops. On hyperevm, protocol system addresses appear as senders and come back with wallet_type
system and no entity name, and labels there are sparse.
# who first funded a wallet: the first inbound coin and the first priced inbound token, with the sender's label
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0x556e9d5d9e64638edde632bbd4810c9fd0d88397/first-funder"
# the same question on Base, where the history starts later
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0x2b1e8e051d85a65306910aef136d2aebf2eaccc5/first-funder?chain=base"
# the very first inbound coin whatever its size, probing dust included
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0x556e9d5d9e64638edde632bbd4810c9fd0d88397/first-funder?min_native=0"
# only a sizeable first coin, at least 0.5 ETH, and tokens worth at least $1000
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0x556e9d5d9e64638edde632bbd4810c9fd0d88397/first-funder?min_native=0.5&min_usd=1000"addresspathrequiredchainqueryoptionalethereum | bsc | base | hyperevm. Default ethereum. Read from that chain's own transfer and label tablesmin_nativequeryoptional0.01 is 0.01 coin, not wei). Inbound native transfers below it are skipped. Omitted resolves to 0.0001; an explicit 0 means no floor and returns the very first inbound, probing dust includedmin_usdqueryoptional1; an explicit 0 means no floor and includes unpriced tokens (mostly spam)A response for one wallet, read from the production tables on 2026-10-19. Its first coin came from a
Binance-labelled wallet in December 2023 and its first priced token from another in December 2025;
label_confidence is the label pipeline's own grade for each sender.
{
"address": "0x556e9d5d9e64638edde632bbd4810c9fd0d88397",
"chain": "ethereum",
"found": true,
"first_native_in": {
"from": "0x28c6c06298d514db089934071355e5743bf21d60",
"label": "binance",
"wallet_type": "cex",
"label_confidence": "medium",
"time": "2023-12-22T02:55:35Z",
"tx_hash": "0x8b24afff9fc8195e19dba0726a77cebc73c182211059c9d0ed1b024e630ab1e6",
"block": 18838548,
"amount": 100.0468,
"amount_symbol": "ETH",
"amount_wei": "100046800000000000000",
"amount_usd": 224241.896116
},
"first_token_in": {
"from": "0x9696f59e4d72e237be84ffd425dcad154bf96976",
"label": "binance",
"wallet_type": "cex",
"label_confidence": "medium",
"time": "2025-12-25T12:28:11Z",
"tx_hash": "0xb6c5bdd7d6e58b163d1c0494e7ca37ed08c37c6216fd09a4bc39aa88cc8f9511",
"block": 24089637,
"token_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"symbol": "USDT",
"amount": 100.0,
"amount_usd": 100.0
},
"coverage": {
"history_from": "2015-08-07",
"native_scope": "Native-coin rows hold top-level value transfers only (a plain send). Coin moved by a contract call, a bridge relay or a batch payout is not in them, so the first inbound we hold can be later than the real first funding. history_from is the date of the oldest transfer row we hold for this chain: a wallet older than that shows a later first.",
"native_filter": "Inbound ETH below 0.0001 ETH is skipped as dust (min_native; 0 = no floor).",
"token_scope": "Token transfers priced at 1 USD or more (min_usd; 0 = no floor, unpriced included). Transfers we hold no USD price for, mostly spam airdrops and the newest hours before pricing runs, are skipped while min_usd is above 0.",
"labels": "A label is the chain's own consensus entity (resolved_entity) with the pipeline's classification_confidence, not a certainty.",
"note": "The earliest qualifying inbound transfer we hold. It is not proof of who funded the wallet: a funder can use a contract, a bridge or an exchange withdrawal, or send below the floor."
}
}/wallets/{address}/ens
Reverse ENS lookup — turn an address into vitalik.eth. Returns null where the address has no ENS name set.
/wallets/{address}/exchange-usage
Which centralised exchanges a wallet sent to and received from over a window, with USD, transfer counts, first and last contact and label confidence.