Batch Decoder API

Decode Ethereum L2s batch transactions to its human-readable, JSON format.

The Blocknative Decoding API offers:

  • Effortless Decoding: No more manual decoding and deciphering of bytes of data. We do all the complicated computation decoding the data and seamlessly translating it into a clear, human-readable format so that you can spend less time troubleshooting and more time building.

  • No Expensive Storage: We store ephemeral blob data so you don’t have to. You will be able to call upon any past transaction and pull up the details even after the 4096 epoch window.

  • No Maintenance Headaches: No need to worry about format changes that occur. We handle all the updates behind the scenes, ensuring your API calls are always accurate.

  • Enhanced Observability: Backend developers and end-users can track the status of their transactions down to the L1 at any point in the journey.

Supported Networks

The Blocknative Decoding API currently supports the following networks:

  • Optimism:

    • Optimism

    • Base

    • Mode

    • Zora

    • Kroma

    • Blast

  • Arbitrum:

    • Arbitrum

  • zksync:

    • ZKsync

We are committed to the ongoing development of batch decoding. Support for additional chains is on the horizon. If you would like to request support of a chain please go to the Blocknative discord.

API Endpoint


Input the transaction hash of a batch and the decoded data is returned. You can query any batch - pending or confirmed. The API supports decoding of calldata (type-2) and blobdata (type-3).

Query Parameters




For batches on the Optimism or Arbitrum network, we paginate the transaction list by frame number (Optimism network) or sequence number (Arbitrum network).



For batches on the ZKsync network, you can choose not to receive the list of state diffs. Param default is set to true.

Example Request

Example Response

  "network": "optimism",
  "chainId": 10,
  "data": {
    "blob": {
      "txCount": 1005,
      "frames": [
          "channelID": "4739f7d92319e39c651811d37e0fdc42",
          "frameNumber": 4,
          "isLast": true,
          "blocksCount": 91,
          "txsCount": 1005,
          "batchType": 1,
          "batches": [
              "batch": {
                "relTimestamp": 31371628,
                "l1OriginNum": 20013189,
                "parentCheck": "0x8d8d5ab78a42bc90fe77091a5a963e8cb2a66dc5",
                "l1OriginCheck": "0x62e8503ae912a7dd64fdccec400d2f4ff961acce",
                "blocksCount": 91,
                "originBits": 6.287949405896787e+26,
                "blockTxCounts": 1005,
                "txs": [
                      "from": "0xEBFce130290083da707F5053568a90B7BDE7eB83",
                      "to": "0xC110E7FAA95680c79937CCACa3d1caB7902bE25e",
                      "gasLimit": 264439,
                      "maxFeePerGas": 73468696,
                      "maxPriorityFeePerGas": 73468696,
                      "nonce": 0,
                      "value": 334155400000000000,
                      "data": "0x6b634a62",
                      "gasPrice": 73468696,
                      "chainId": 10,
                      "hash": "0xb3ba553c696b36b26c336fd73563e453fbffde73e1450062d84b925fc282eda6"

Description of Terms



Options include: optimism, arbitrum or zksync


The chain ID of the chain that posted the batch


A container with either the decoded blobdata and/or decoded calldata, depending on the chain and the transaction type. Type-2 transactions only contain calldata. Type-3 transactions can contain only blobdata or both blobdata and calldata.


Decoded contents of the blobdata, specific to each chain. For example, Optimism chains have a list of frames and transactions within those frames.


Decoded contents of the calldata specific to each chain. For example, ZKsync calldata contains data on the previous and new state of the chain.

Last updated