Get a batch

Retrieve one batch by its Dual identifier. The response shows its position in the batch chain, the actions it contains, the network-state roots before and after those actions, and its proof and on-chain settlement details. This is what you need to check a batch for yourself. `commitment` is the value written on chain, `integrity_root` and `prev_integrity_root` fingerprint the network's state after and before the batch, `actions_hash` pins the exact list of actions, and `ipfs_url` points to the published data all of it was computed from. Recent batches may still be moving through the pipeline. Proof, storage and transaction fields appear as those stages complete; use `status` to decide which fields should be present. A `finalized` batch has completed its challenge window and includes its finalization transaction. Open to everyone. No sign-in needed.

GET
/public/batches/{batchId}

Path Parameters

batchId*string

Identifier of the batch.

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://api.dual.network/public/batches/665f1c2d4b1a2c3d4e5f6a20"
{
  "id": "665f1c2d4b1a2c3d4e5f6a20",
  "sequence": 794,
  "hash": "0x7f1a9c3e5d2b4806a1c9d8e7f6a5b4c3d2e1f00918273645546372819a0b1c2d",
  "prev_hash": "0x6e0b8d2f4c1a3795b0d8c7e6f5a4b3c2d1e0f00817263544536271809f0a1b2c",
  "integrity_root": "0x91a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f80",
  "prev_integrity_root": "0x80f7e6d5c4b3a2918f7e6d5c4b3a2918f7e6d5c4b3a2918f7e6d5c4b3a2918f7",
  "sender": "0x9999999999999999999999999999999999999999",
  "commitment": "0x1122334455667788990011223344556677889900112233445566778899001122",
  "actions_hash": "0x2233445566778899001122334455667788990011223344556677889900112233",
  "actions_count": 2,
  "affected_actions": [
    {
      "id": "665f1c2d4b1a2c3d4e5f6e01",
      "hash": "0xaa11bb22cc33dd44ee55ff6677889900aabbccddeeff00112233445566778899",
      "name": "mint"
    },
    {
      "id": "665f1c2d4b1a2c3d4e5f6e02",
      "hash": "0xbb22cc33dd44ee55ff6677889900aabbccddeeff00112233445566778899aabb",
      "name": "transfer"
    }
  ],
  "total_fee": "0.028000",
  "total_fee_wei": "679611650485436",
  "version": 2,
  "status": "finalized",
  "proof_id": "prf_01J9Z3K2QW",
  "ipfs_url": "https://ipfs.example.com/ipfs/bafybeiexamplecontentidentifier",
  "l2_tx_hash": "0xcafe0011223344556677889900aabbccddeeff00112233445566778899aabbcc",
  "l2_finalization_tx_hash": "0xbeef0011223344556677889900aabbccddeeff00112233445566778899aabbcc",
  "challenge_window_end": "2026-03-02T18:00:00Z",
  "when_created": "2026-03-02T14:00:00Z",
  "when_created_unix": 1772460000,
  "when_completed": "2026-03-02T18:04:11Z",
  "when_modified": "2026-03-02T18:04:11Z"
}
{
  "code": 3,
  "message": "Key: 'limit' Error:Field validation for 'limit' failed on the 'lte' tag"
}
{
  "code": 5,
  "message": "object not found"
}
{
  "code": 13,
  "message": "internal error"
}