---
title: "POST /dry-run"
method: POST
path: "/dry-run"
tags: ["external", "dry-run"]
---

# POST /dry-run

`POST /dry-run`

Dry-run transactions on top of a given block. Supports all TXs except GAMetaTx, PayingForTx and OffchainTx. The maximum gas limit of all calls is capped. The maximum gas limit per request is a global node setting. Since DryRunCallReq object do not have a mandatory gas field, if not set a default value of 1000000 is being used instead.

## Request body

- DryRunInput
  - `top` string — Base58Check encoded tagged hash
  - `accounts` DryRunAccount[] — Accounts
    - `pub_key` string, required — Base58Check encoded tagged pubkey
    - `amount` integer, required
  - `txs` DryRunInputItem[], required — Txs
    - `tx` string — Base64Check encoded tagged byte array
    - `call_req` DryRunCallReq
      - `calldata` string, required — Base64Check encoded tagged byte array
      - `contract` string, required — Base58Check encoded tagged pubkey
      - `amount` integer
      - `gas` integer
      - `caller` string — Base58Check encoded tagged pubkey
      - `nonce` integer
      - `abi_version` integer
      - `context` DryRunCallContext
        - `tx` string — Base64Check encoded tagged byte array
        - `tx_hash` string — Base58Check encoded tagged hash
        - `stateful` boolean — This call will have effects on the next call in this dry-run (or not)
  - `tx_events` boolean — Collect and return on-chain tx events that would result from the call

## Response `200`

Dry-run result

- DryRunResults
  - `results` DryRunResult[], required — results
    - `type` string, required
    - `result` string, required
    - `reason` string
    - `call_obj` ContractCallObject
      - `caller_id` string, required — Base58Check encoded tagged pubkey
      - `caller_nonce` integer, required
      - `height` integer, required
      - `contract_id` string, required — Base58Check encoded tagged pubkey
      - `gas_price` integer, required
      - `gas_used` integer, required
      - `log` Event[], required
        - `address` string, required — Base58Check encoded tagged pubkey
        - `topics` UInt[], required — Event topics
        - `data` string, required — Base64Check encoded tagged byte array
      - `return_value` string, required — Base64Check encoded tagged byte array
      - `return_type` 'ok' | 'error' | 'revert', required — The status of the call 'ok | error | revert'.
  - `tx_events` TxEvent[] — on-chain tx events

## Other responses

- `400` — Invalid input
- `403` — Over the gas limit
- `503` — The node is temporarily unable to handle the request: either its request queues are saturated (overload protection) or it has not yet reached a stable mode. Overload protection is applied to every endpoint, so this response can be returned by any operation. The Retry-After header tells the client how long to back off before retrying.

---

[API](https://skmtc.net/aeternity/apis/aeternity-node.md) · [All operations](https://skmtc.net/aeternity/apis/aeternity-node/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/aeternity/aeternity-node/versions/597a254980b2/schema)
