# Placing Orders

> Place quote-gated market orders and resting limit or stop orders with correct sizing, idempotency, and lifecycle handling.

## Market order sequence

1. Request `GET /quote/{symbol}` with the account, side, and exact `quantity` or `cashValue`.
2. Validate `quoteExpiresAt`, fees, currency, and sufficient funds.
3. Submit `POST /trade` or `POST /users/{userId}/trade` with the matching `quoteId`.
4. Include a unique `Idempotency-Key`.
5. Follow the order through REST, SSE, or signed webhooks.

## Resting order sequence

`LIMIT`, `STOP`, and `STOP_LIMIT` orders supply trigger/limit prices and do not use `quoteId`. They return `WORKING` while resting, may trigger later as `order.triggered`, and can be cancelled while active.

```json
{
  "symbol": "SCOM.KE",
  "type": "BUY",
  "orderType": "LIMIT",
  "quantity": 100,
  "limitPrice": 16.25,
  "timeInForce": "GTC"
}
```

Every write must be safe to retry with the same idempotency key. A new key represents a new operation, not a retry of the previous request. See [Order Lifecycles](/partners/docs/lifecycles) for terminal states and [Advanced Order Types](/partners/docs/advanced-order-types) for triggers and expiry.
