stopPrice. The moment it does, the stop converts to a market order and executes at the best available price. It’s the classic tool for cutting a loss or protecting a profit when you can’t watch the market.
A stop guarantees execution once triggered, not a price. In a fast or gapping market the fill can be worse than the stop level. If you need a price ceiling/floor on the triggered order, use a Stop-Limit order instead.
When to use it
- Stop-loss: you’re long AAPL at 150 and want to exit if it falls to 145 → a
SELLstop atstopPrice: "145.00". - Protect a gain: trail your exit up as the position profits.
- Breakout entry: buy only once price breaks above resistance → a
BUYstop above the current price.
Which way does the stop trigger?
How it works
- You
POST /v1/orderswithtype: "STOP"and astopPrice— noprice. - The order is accepted and waits, inactive, off the visible book.
- When the market touches
stopPrice, it becomes a market order and routes immediately. - It fills (
FILLED/PARTIALLY_FILLED), streamed asaccount.orderevents.
Request
Example — stop-loss: sell 100 AAPL if it drops to 145
cURL
Request body
Response
NEW here means the stop is armed and waiting — it is not yet executing.
Watch it trigger and fill
Until the trigger is hit you’ll see the order resting. WhenstopPrice is touched, it converts and fills — delivered as account.order events:
account.order — triggered & filled
avgPrice (144.92) came in below the stopPrice (145.00) — that’s the market-order behavior after triggering. See the Limit order → Listen for updates section for the connect/subscribe handshake, or the full Account Updates WebSocket reference.
Next steps
Stop-limit order
Add a price limit so the triggered order can’t fill worse than you allow.
Limit order
Full REST + WebSocket round-trip walkthrough.
Place Order API
Interactive reference for
POST /v1/orders.Order Flow
How all order types fit together.