POST /execution/orders places one market order on that venue. It does not quote first, and it does not split across venues.
To show a price before committing, quote and fill instead.
Authenticate with x-app-id and Authorization: Bearer.
pending. Statuses after that are on Order lifecycle.
maxSpend is the most a buy can be charged, fees included. sellShares bounds how many contracts a sell closes, not the proceeds. Set slipCapBps on a sell when the default 5% cap is too wide.
externalId
externalId is required and unique within the app. Two users of the same app cannot share one. Retrying a timeout with the same value is safe: the repeat does not place a second trade. The idempotency table, including the 409 and how to find the order after a timeout, is on Errors.
Naming the outcome
Pass the id fromvenueMarketOutcomes[].id for the venue you named. That is the form that pins the outcome.
An id from another venue is resolved through matched outcomes instead of rejected, so a mismatched id can still place an order on the outcome the match selected. If several outcomes on the requested venue match and none is the one you named, the request fails with 400 and code: "outcome_ambiguous".
On a sell, that resolution runs over the positions held on the venue, not over every outcome. Read positions first when it matters which one closes.
Fee overrides
appFeeBips, appFeeBipsByVenue, referrer, referrerFeeBips, and referrerFeeBipsByVenue override the fee for one order. They need x-app-api-key. For a ...ByVenue map, the entry for venue applies. See Fees.
To have a wallet of yours pay Hyperliquid’s activation fee for an unactivated referrer, send referralActivationSponsorAddress. See Fees.
Skipping the quote
skipQuote: true skips the route solver and sends the order straight to the venue you named.
- Venues:
predict,hyperliquid,novig, andprophetxonly. Any other venue returns400. The outcome must already live onvenue. It is not resolved through matched outcomes. - Requires a
read_writex-app-api-key.401without a key,403with areadkey. Do not put that key in a browser. priceis optional. It is a 0–1 decimal such as0.52, not a 6-decimal integer. If you omit it, submission uses the best ask on a buy or the best bid on a sell, and an empty side returns400. A Hyperliquid buy is sized as the whole contracts that fitmaxSpendatpriceplus slippage.prophetxignoresprice. The venue prices the order withinslipCapBps. The user needs a KYC-verified wallet, or the call returns400. See KYC.novigandprophetxsettle in USDC on Solana, so a buy needs that USDC already there.- Referral fields with
skipQuotereturn400referral_invalid. - No bridging. Funds must already sit on the venue’s own chain.
allowedSourceChainIdsandchainBalancesare ignored. skipBalance: truetogether withskipQuoteskips the balance check and the fund hold on a buy. Nothing checks the balance, and an underfunded order fails at the venue.skipBalance: truewithoutskipQuotekeeps the route and skips only the quote-time balance refresh, so the route uses the last stored balances. The fund hold and the balance check still run. A stale balance can fail the order after it was accepted, and it cannot overspend. Either form requires aread_writekey.- Sells are always position-checked.
skipBalancedoes not apply to them. - You own the price and the minimum checks. An order the venue refuses fails after it was accepted, and that
externalIdis used up. Retry with a new one.
maxSpend stays the buy ceiling, and the app fee still applies.