---
title: "Simulate already-built transactions (standalone)"
method: POST
path: "/api/v1/simulate"
tags: ["quote"]
---

# Simulate already-built transactions (standalone)

`POST /api/v1/simulate`

Standalone simulator that returns predicted output amounts and gas for transactions that are ALREADY built (from any source). This is NOT part of the routing flow and is NOT a prerequisite for `/shortcuts/route` — `route` already quotes internally and returns executable calldata in a single call. Do not call this before routing. Use it only to independently simulate/validate arbitrary transactions you already have.

## Headers

- `x-request-id` string, required

## Request body

- QuoteManyRequest — Request to quote multiple transactions
  - `amountIn` DecimalU256[], required — List of input amounts (as decimal strings)
  - `chainId` integer, required — Chain ID (e.g., 1 for Ethereum mainnet)
  - `tokenIn` string[], required — List of input token addresses
  - `tokenOut` string[], required — List of output token addresses
  - `transactions` APITransaction[], required — List of transactions to quote
    - `data` string, required — Transaction calldata
    - `executor` unknown
    - `from` string, required — Sender address
    - `operationType` unknown
    - `origin` unknown
    - `receiver` unknown
    - `spender` unknown
    - `to` string, required — Target contract address
    - `value` string, required

## Response `200`

Quote successful

- QuoteResponse[]
  - `amountOut` DecimalU256[] — Output amounts for each output token (as decimal strings)
  - `error` QuoteError
    - `message` string, required
    - `payload` union, required
      - object
        - `payload` CallFailed, required
          - `data` unknown
          - `index` string, required
          - `target` string, required
          - `value` unknown
        - `type` 'CallFailed', required
      - object
        - `payload` CallFailedWithDetails, required
          - `call` CallFailed, required
            - `data` unknown
            - `index` string, required
            - `target` string, required
            - `value` unknown
          - `state_override` unknown
        - `type` 'CallFailedWithDetails', required
      - object
        - `type` 'CallReverted', required
      - object
        - `payload` ShortcutFailed, required
          - `call` CallFailed, required
            - `data` unknown
            - `index` string, required
            - `target` string, required
            - `value` unknown
          - `command` CommandFailed, required
            - `arguments` string[]
            - `command` unknown
            - `index` string, required
            - `signature` unknown
            - `target` string, required
          - `state_override` unknown
        - `type` 'ShortcutFailed', required
      - object
        - `type` 'DecodeError', required
      - object
        - `type` 'ProviderError', required
      - object
        - `type` 'UnkownError', required
  - `gas` string
  - `stateOverride` unknown
  - `status` 'Success' | 'Error', required

## Other responses

- `400` — Bad request
- `500` — Internal server error

---

[API](https://skmtc.dev/enso/apis/enso-api.md) · [All operations](https://skmtc.dev/enso/apis/enso-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/enso/enso-api/revisions/249f471fdafd/schema)
