Wallets API

Wallet transaction ledgers

A wallet's own normal and internal transaction ledgers in a window — native-currency moves and contract calls, not swaps. Different from wallet activity, which reports only trade (swap) events.

GET/api/external/wallet-analysis/wallet-transactions/{chain}/{address}

What it returns

Two INDEPENDENT ledgers, always both fetched: normal (native-currency moves and contract calls this wallet sent or received directly) and internal (EVM message-calls traced inside another transaction — e.g. this wallet receiving ETH from a contract's internal logic, not a direct send). Neither is a fallback of the other. normalCoveredFrom/internalCoveredFrom are null ONLY when that specific ledger could not be reached at all — a wallet with genuinely ZERO internal transactions, ever, still reports a non-null internalCoveredFrom alongside an empty internal array; those are different, distinguishable answers. On SOL only normal exists: internal is always empty with internalCoveredFrom: null, failed transactions are not listed, and transactions that touched only the wallet's token accounts are.

Chains

  • Solana SOL
  • BNB Chain BNB
  • Ethereum ETH
  • Stable STABLE
  • Base BASE
  • Robinhood Chain RHC

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -H "x-dex-data-key: $DEXDATA_API_KEY" \
  "https://api.dexdata.io/api/external/wallet-analysis/wallet-transactions/SOL/<address>?from=<from>&to=<to>&limit=<limit>"
Parameters
ParameterDescription
from

query · integer · required

Window start, Unix SECONDS. Inclusive.
to

query · integer · required

Window end, Unix SECONDS. Inclusive.
limit

query · integer · required

Most rows to return per ledger, newest-first within the window. Capped at 50 (enforced after the API-key gate; see above). Applied INDEPENDENTLY to normal and internal — each may return up to this many rows.
chain

path · string · required

The chain the wallet address belongs to. Served on SOL, BNB, ETH, BASE, STABLE, RHC; ARC returns 400 — no wired source reports per-wallet transaction ledgers there. CELO, ARB, OP and SCROLL return 400 here.
address

path · string · required

The wallet address.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of Wallet transaction ledgers
FieldTypeDescription
normalobject[]
normal[].atnumberUnix SECONDS.
normal[].fromstring | nullThe sender. On SOL, the account that paid the fee.
normal[].tostring | nullThe recipient. Always null on SOL, where a transaction has no single recipient.
normal[].valueNativenumber | nullDecimalized native-currency amount (the chain's own gas token). On SOL, the wallet's own net SOL change in that transaction, fee excluded and signed: negative when SOL left the wallet, 0 when none moved.
normal[].isErrorboolean | nulltrue when the transaction reverted, false when it succeeded, null when not reported.
normal[].txHashstring | null
normalCoveredFromnumber | nullThe earliest instant the normal-transaction ledger actually reached, clamped to the requested from. null only when this ledger could not be reached at all — a confirmed-empty ledger still reports a non-null value here.
normalTruncatedboolean
internalobject[]
internal[].atnumberUnix SECONDS.
internal[].fromstring | null
internal[].tostring | null
internal[].valueNativenumber | null
internal[].typestring | nullThe reported call-type label ("call", "create", "create2", …), passed through verbatim.
internal[].isErrorboolean | null
internal[].txHashstring | null
internalCoveredFromnumber | nullSame meaning as normalCoveredFrom, independently tracked for the internal ledger.
internalTruncatedboolean

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key