Transactions API
Beacon-chain validator deposits made by a transaction
Which beacon-chain validator deposits one transaction made: amount, validator public key, withdrawal address, deposit index and status.
/api/external/transaction-analysis/transaction-beacon-deposits/{chain}/{hash}What it returns
Every beacon-chain validator deposit one transaction made: amount, validator public key, withdrawal address, deposit index and status. Served on Ethereum mainnet only; every other chain returns 400. A transaction that made no deposits answers deposits: [] — a real answer, not an error. A hash that is well-formed but unknown answers 404, never an empty list: "we have no such transaction" and "this transaction made no deposits" are different answers and this resource keeps them apart. Exactly one upstream call is made per request; see complete.
Chains
- Ethereum ETH
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/transaction-analysis/transaction-beacon-deposits/ETH/<hash>"
| Parameter | Description |
|---|---|
chainpath · string · required | Ethereum only; every other chain returns 400 — beacon-chain deposits are read from a single mainnet source with no equivalent on any other chain this API serves. |
hashpath · string · required | The transaction hash: 0x followed by 64 hexadecimal characters. Not a Solana signature (base58) — Solana is not served by this resource. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
transactionHash | string | The transaction hash, lowercase. |
deposits | object[] | In the order the source returns them; not necessarily sorted by index. |
deposits[].index | integer | The deposit index: one per deposit accepted by the deposit contract, counting up from 0 across the whole chain. It is not a position within this transaction. Rows come back newest first, so within one transaction the index descends. |
deposits[].pubkey | string | The validator’s BLS public key. |
deposits[].signature | string | null | The deposit’s BLS signature, or null when not reported. |
deposits[].withdrawalCredentials | string | null | The raw withdrawal-credential bytes, 0x-prefixed. |
deposits[].withdrawalCredentialType | string | null | Derived from the first byte of withdrawalCredentials: bls (0x00), execution (0x01) or compounding (0x02). null for a prefix never observed. |
deposits[].withdrawalAddress | string | null | The execution-layer withdrawal address. null exactly when withdrawalCredentialType is bls — a real "no execution withdrawal address", not missing data. |
deposits[].amountWei | string | The deposit amount in WEI, as a decimal string. Never assume 32 ETH: amounts of 1.25, 31, 32, 119.594551 and 1000 ETH have all been observed on real deposits. Kept as a string and never pre-divided: at 18 decimals the value routinely exceeds what a JSON number holds exactly. |
deposits[].status | string | null | Served exactly as the source reports it. "pending" and "completed" are the only values observed; the exact point a deposit flips from one to the other was not measured, so this is deliberately a free string rather than a closed enum. |
deposits[].blockNumber | integer | null | The block the deposit transaction was mined in. |
deposits[].blockTimestamp | integer | null | Unix SECONDS the block was mined at. |
deposits[].fromAddress | string | null | The address that sent the deposit transaction. |
deposits[].transactionHash | string | null | The transaction hash this deposit was made in. |
complete | boolean | false when the source’s own pagination cursor says more deposits exist beyond this page. Exactly one upstream call is made per request and pagination is never walked, so a transaction with more deposits than one page holds is served short with complete: false rather than paying an unbounded number of round trips. |
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