---
title: "Simulate a single transaction on top of a chain tip"
method: POST
path: "/v3/transactions/simulate"
tags: ["Transactions"]
---

# Simulate a single transaction on top of a chain tip

`POST /v3/transactions/simulate`

Simulate a single transaction in an ephemeral block built on top of
the given chain tip, or the canonical chain tip if the `tip` query
parameter is omitted (no data is written in the MARF), and return its
result, events, and execution cost. The simulation runs with the full
tenure execution budget, independent of the cost already consumed in
the current tenure. The transaction must be fully signed and valid
(correct nonce, sufficient balance for the fee). The simulation
enforces the same per-transaction wall-clock and memory limits the
signers apply during block proposal validation (the
`connection_options.block_proposal_max_tx_execution_time_secs`,
`block_proposal_max_tx_analysis_time_secs`, and
`block_proposal_max_tx_mem_bytes` options), so a transaction which
exceeds them fails to simulate.

A `tip` naming a block that does not exist returns 404. A `tip` naming
a block that exists but cannot be simulated by this endpoint (for
example an epoch-2.x block) returns 400.

## Parameters

- `./components/parameters/tip.yaml` — unresolved $ref

## Request body

- object
  - `transaction_hex` string, required — SIP-005-encoded transaction in hex format

## Response `200`

Result of the simulated transaction

- object
  - `txid` string — The transaction ID
  - `tip_block_id` string — The block ID of the chain tip the transaction was simulated on top of
  - `consensus_hash` string — Consensus hash of the tenure the simulated block would extend
  - `block_height` integer — Height of the ephemeral block the transaction was simulated in
  - `result_hex` string — Clarity value returned by the transaction, encoded as a 0x-prefixed hex string
  - `stx_burned` integer — Amount of microSTX burned
  - `execution_cost` ExecutionCost — unresolved $ref
  - `execution_limit` ExecutionCost — unresolved $ref
  - `events` object[] — Events generated by the transaction
  - `post_condition_aborted` boolean — Whether the transaction was aborted by a post-condition
  - `vm_error` string, nullable — VM error, if any

## Other responses

- `400` — Bad request
- `401` — Unauthorized. Invalid or missing authentication token.
- `404` — Not found
- `500` — Internal Server Error

## Changes

- **2026-08-20** `bfe6e0b30f62` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/stacks-network/apis/stacks-3-0-rpc-api/changes/v3/transactions/simulate/post.md)

---

[API](https://skmtc.dev/stacks-network/apis/stacks-3-0-rpc-api.md) · [All operations](https://skmtc.dev/stacks-network/apis/stacks-3-0-rpc-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stacks-network/stacks-3-0-rpc-api/revisions/bfe6e0b30f62/schema)
