---
title: "Submit an order"
method: POST
path: "/order"
tags: ["Flash"]
---

# Submit an order

`POST /order`

Submit a flash order for MEV-protected execution.

**Signing requirement.** The funder wallet must sign data returned by `POST /quote` before this call:

- **EVM chains** — sign the `evm.orderTypedData` payload (EIP-712); pass the 0x-prefixed hex signature as `userSignature`. Echo the typed data back as `evmOrderTypedData`. If the quote returned `evm.permitTypedData`, sign that too, echo it back as `evmPermitTypedData`, and pass the signature as `evmPermitSignature`.
- **SVM** (`solana`) — produce a 64-byte Ed25519 signature over `svm.orderMessage`; pass the base58 signature as `userSignature`. Also echo `svm.nonce` as `svmNonce` and `svm.deadline` as `svmDeadline` from the quote response. If `svm.sponsoredDelegateTx` is non-null, sign and echo it back as `svmSponsoredDelegateTx` — Definitive covers the network fee.

**Attached brackets.** If the quote carried `attachedBracket`, sign its chain block with the funder wallet — on EVM sign `attachedBracket.evm.orderTypedData` (EIP-712) and echo `salt`; on Solana produce a 64-byte Ed25519 signature over `attachedBracket.svm.orderMessage` and echo `attachedBracket.svm.nonce` as `svmNonce` — and submit the block with the same legs plus `userSignature`, `deadline`, and `signedMaxFromAmount` echoed from the quote (on EVM, also the permit echo pair when the quote returned `attachedBracket.evm.permitTypedData`; on Solana, execute `attachedBracket.svm.delegateIx` first unless it rode the sponsored transaction). The pair becomes a live order on the entry's first fill and sells what the entry received when a leg triggers; the entry stops filling at that point. The response carries the entry's `orderId` alone — the protective order gets its own id once it activates.

Pass `quoteId` from the prior quote to lock pricing.
For cross-chain market orders, also pass `recipientAddress` and echo a non-null `bridgeQuoteId` from the quote response.

## Request body

- SubmitOrderRequest
  - `targetChain` 'arbitrum' | 'avalanche' | 'base' | 'bsc' | 'ethereum' | 'optimism' | 'polygon' | 'solana' | 'hyperevm' | 'plasma' | 'monad' | 'robinhood', required — Chain of the target (traded) asset. May differ from `contraChain` for a cross-chain market order.
  - `contraChain` 'arbitrum' | 'avalanche' | 'base' | 'bsc' | 'ethereum' | 'optimism' | 'polygon' | 'solana' | 'hyperevm' | 'plasma' | 'monad' | 'robinhood', required — Chain of the contra (counter) asset. May differ from `targetChain` for a cross-chain market order.
  - `targetAsset` string, required — Address of the target (traded) asset.
  - `contraAsset` string, required — Address of the contra (counter) asset — spent on buys, received on sells.
  - `side` 'buy' | 'sell', required — direction of the order
  - `qty` string, required — Amount of the asset being spent (sold), as a decimal string in the asset's normalized units. For `buy` orders this is in `contraAsset` units; for `sell` orders this is in `targetAsset` units.
  - `orderType` 'market' | 'limit' | 'twap' | 'stop' | 'stop-loss' | 'take-profit' | 'bracket', required — Order type. Cross-chain orders support `market` only.
  - `quickTrade` boolean — Execution mode for sniping newly launched tokens (exclusive to same-chain market swaps; not supported cross-chain). Reach out to the Definitive team to find out whether QuickTrade is a good fit for your use case.
  - `maxSlippage` string — Slippage tolerance as a decimal (e.g. 0.05 = 5%). When omitted, our engine sets a slippage at order admission.
  - `maxPriceImpact` string — Maximum price impact as a decimal (e.g. 0.05 = 5%). Defaults to 0.05.
  - `limitNotionalPrice` string — USD limit price for the traded (`targetAsset`) asset. Required for `limit` orders unless `limitCrossPrice` is set; optional for `twap`, `stop`, `stop-loss`, and `take-profit` (trigger orders are promoted to the corresponding LIMIT variant).
  - `limitCrossPrice` string — Pair-rate limit price — how many `contraAsset` units one `targetAsset` unit is worth. Frame is the same on `buy` and `sell`. Mutually exclusive with `limitNotionalPrice`; either satisfies the limit-price requirement.
  - `funderAddress` string, required
  - `recipientAddress` string — Address that receives funds on the destination chain. Required when `targetChain` and `contraChain` differ.
  - `quoteId` string — QuoteResponse.quoteId. For marketable orders, passing this value in tries executing the cached quote from before instead of requoting again. For non-market orders, this field is unnecessary.
  - `bridgeQuoteId` string — QuoteResponse.bridgeQuoteId. Cross-chain only; binds submission to the cached bridge quote when present.
  - `flashIntegratorFeeBps` string
  - `erc8021AttributionCode` string — Optional. The integrator's ERC-8021 builder code as registered on base.dev (e.g. `acme`). Plain value, not key:value — the code is the lookup key into Base's on-chain Code Registry. Applies to EVM settlement transactions only; silently ignored for SVM (Solana) orders. Appended to the settlement transaction calldata alongside Definitive's own builder code as a comma-separated ERC-8021 suffix. An unregistered/typo'd code never fails the order — indexers just can't resolve it to a payout address.
  - `userSignature` string, required — Funder wallet signature over the order payload. Accepts 0x-prefixed hex (EVM convention) or base58 (Solana convention). EVM: EIP-712 signature over `evm.orderTypedData`; SVM: 64-byte Ed25519 signature over `svm.orderMessage`.
  - `evmOrderTypedData` string — Echo of `QuoteResponse.evm.orderTypedData`. EVM-only.
  - `evmPermitTypedData` string — Echo of `QuoteResponse.evm.permitTypedData`. EVM-only.
  - `evmPermitSignature` string — Permit2 signature over `evm.permitTypedData`. EVM-only; accepts 0x-prefixed hex.
  - `svmNonce` string — Echo of `QuoteResponse.svm.nonce`. SVM-only.
  - `svmDeadline` string — Unix-seconds expiry, echo of `QuoteResponse.svm.deadline`. SVM-only (the EVM deadline is encoded inside `evm.orderTypedData`).
  - `svmSponsoredDelegateTx` string — Base64 echo of `QuoteResponse.svm.sponsoredDelegateTx` after signing with the funder wallet. SVM-only and required when the quote returned a non-null `svm.sponsoredDelegateTx`; omit otherwise.
  - `twapBucketCount` integer — TWAP only. Must equal the value used at quote time.
  - `startTime` string, date-time — TWAP only. Scheduled execution start; must equal the value used at quote time.
  - `triggers` PriceTrigger[] — Price triggers. Each entry requires exactly one of `notionalPrice` or `crossPrice`. Must echo the values used at quote time for trigger orders.
    - `notionalPrice` string — USD-price trigger on the traded (`targetAsset`) asset.
    - `crossPrice` string — Pair-rate trigger — price of `targetAsset` denominated in `contraAsset`. Mutually exclusive with `notionalPrice`.
    - `triggerType` 'upper' | 'lower', required — "lower": fires when market drops to/below the price. "upper": rises to/above.
  - `attachedBracket` object — The attached take-profit / stop-loss pair: the legs as quoted plus the signature material from the quote's `attachedBracket` block.
    - `takeProfit` AttachedBracketLeg, required — Fires when the received asset's price rises to or above the trigger.
      - `notionalPrice` string — USD-price trigger on the asset the order receives (the `to` leg). Each leg requires exactly one of `notionalPrice` or `crossPrice`.
      - `crossPrice` string — Pair-rate trigger — price of the received asset denominated in the spent asset. Mutually exclusive with `notionalPrice`.
      - `limitPrice` string — Optional limit price for the exit placed when this leg fires. Omit to exit at market. Same denomination as the leg's trigger price.
    - `stopLoss` object, required — Fires when the received asset's price drops to or below the trigger.
      - `notionalPrice` string — USD-price trigger on the asset the order receives (the `to` leg). Each leg requires exactly one of `notionalPrice` or `crossPrice`.
      - `crossPrice` string — Pair-rate trigger — price of the received asset denominated in the spent asset. Mutually exclusive with `notionalPrice`.
      - `limitPrice` string — Optional limit price for the exit placed when this leg fires. Omit to exit at market. Same denomination as the leg's trigger price.
    - `userSignature` string, required — Signature over the attached pair's signing payload: on EVM an EIP-712 signature over `attachedBracket.evm.orderTypedData` (0x-prefixed hex); on Solana an Ed25519 signature over `attachedBracket.svm.orderMessage` (base58 or hex).
    - `salt` string — EVM only — echo of the quote's `attachedBracket.salt`. Required on EVM; omit on Solana.
    - `svmNonce` string — Solana only — echo of the quote's `attachedBracket.svm.nonce`. Required on Solana; omit on EVM.
    - `deadline` string, required — Echo of the quote's `attachedBracket.deadline`.
    - `signedMaxFromAmount` string, required — Echo of the quote's `attachedBracket.signedMaxFromAmount` — the value baked into the signed typed data.
    - `evmPermitSignature` string — Permit2 signature over the quote's `attachedBracket.evm.permitTypedData`. Required when that field was non-null; provide together with `evmPermitTypedData`.
    - `evmPermitTypedData` string — Echo of the quote's `attachedBracket.evm.permitTypedData`. Provide together with `evmPermitSignature`.

## Response `201`

Order submitted successfully

- SubmitOrderResponse
  - `orderId` string, required
  - `attachedBracket` object — Present only when the order carried `attachedBracket`.
    - `status` string, required — The attached pair becomes a live order on the entry's first fill; until then it is pending activation.

## Other responses

- `400` — Invalid request parameters
- `401` — Authentication failed
- `403` — Permission denied
- `404` — Resource not found
- `422` — Resource state prevents the requested operation
- `429` — Rate limit exceeded
- `500` — Internal server error
- `503` — Service temporarily unavailable
- `504` — Gateway timeout

## Changes

> 10 revisions in range; 7 could not be searched.

- **2026-07-26** `0722d2b04e4e` — 2 breaking, 5 info
  - removed the enum value `blast` of the request property `contraChain/allOf[#/components/schemas/Chain]/`
  - removed the enum value `blast` of the request property `targetChain`
  - added the new optional request property `erc8021AttributionCode`
  - added the new optional request property `limitCrossPrice`
  - …3 more

[Change history](https://skmtc.dev/definitive/apis/definitive-flash-api/changes/order/post.md)

---

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