Transactions API
The blobs one Ethereum transaction carried
The EIP-4844 blobs a transaction carried — versioned hash, KZG commitment and proof, size, and the blob data on request.
/api/external/transaction-analysis/transaction-blobs/{chain}/{hash}What it returns
The EIP-4844 blobs a transaction carried, in the order it carried them: the versioned hash, the KZG commitment and proof, and how many bytes of blob data there are. blobCount is 0 with an empty list when the transaction carried no blobs — a real answer, not a missing one; an unknown transaction hash returns 404. A blob is 128 KiB of data, which is 262146 characters once it is hex on the wire, so the data itself is left out unless includeData=true is asked for: a six-blob transaction is a 1.57 MB response body. kzgCommitment, kzgProof and dataBytes can be null together while the source is still indexing a newly seen blob — that is "not yet", never "none", and it has been seen once in 27 reads, at about a minute of age. dataBytes is what tells a missing blob apart from an unrequested one: it is published whether or not the data was asked for, so a blob with dataBytes set and data null simply was not asked for.
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-blobs/ETH/<hash>"
| Parameter | Description |
|---|---|
includeDataquery · boolean · optional | Whether to return the blob data itself. Off by default: each blob is 128 KiB of data, 262146 characters as hex, and a transaction may carry six — 1.57 MB of response body. The metadata is the same either way. |
chainpath · string · required | ETH only. Blobs are an Ethereum EIP-4844 feature; every other chain returns 400. |
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 |
|---|---|---|
blobCount | integer | How many blobs the transaction carried. 0 means it carried none. |
blobs | object[] | In the order the transaction carried them. Empty when it carried no blobs. |
blobs[].versionedHash | string | The blob's versioned hash — 0x01 followed by 31 bytes of the commitment's hash. This is what the transaction commits to on chain. |
blobs[].kzgCommitment | string | null | The KZG commitment, 0x + 48 bytes. null while the blob is still being indexed. Since the Fulu fork the proof of a single blob is no longer a proof of its own: every blob measured carries the 48-byte infinity point as its proof, and the commitment is the field that identifies the blob cryptographically. |
blobs[].kzgProof | string | null | The KZG proof, 0x + 48 bytes. null while the blob is still being indexed. |
blobs[].dataBytes | integer | null | How many bytes of blob data there are — 131072 for an indexed blob, the only size EIP-4844 defines. null when the blob is still being indexed, and null as well in the rare case where the source answered a length this endpoint cannot vouch for, which it reports rather than publishes. |
blobs[].data | string | null | The blob itself, 0x + 131072 bytes of hex, only when includeData=true was asked for AND the blob is indexed. null otherwise — dataBytes says which. |
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