vike
API EndpointsOn-chain

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

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

cURL
# 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"
addresspathrequired
Wallet address, 0x-prefixed hex
chainqueryoptional
ethereum | bsc | base | hyperevm. Default ethereum. Read from that chain's own transfer and label tables
min_nativequeryoptional
Dust floor for the native coin, in whole coins (ETH, BNB or HYPE; 0.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 included
min_usdqueryoptional
Floor for the token side, in USD. Token transfers priced below it, or with no USD price, are skipped. Omitted resolves to 1; 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.

Example response
{
  "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."
  }
}
Example response
{  "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."  }}