Skip to main content
The order endpoints let you place, inspect, and cancel orders on the Polymarket CLOB. A single POST /v2/trade/order call handles every order type, from a simple limit order to a multi-hour TWAP execution, using a unified request shape. Cancellation endpoints give you granular control to remove one order, a targeted batch, or every open order at once.

POST /v2/trade/order

Places a single order. The type field selects the execution strategy; some fields are required or ignored depending on the chosen type (see notes below each parameter). Required headers

Request body

string
required
Polymarket outcome token ID (hex address). Identifies the specific outcome (e.g. the YES token of a market).
string
required
"buy" or "sell".
string
required
Execution strategy. One of: LIMIT | MARKET | PEGGED | TWAP | ICEBERG | TAKE_PROFIT | STOP_LOSS | TRAILING_STOP.
string
Decimal probability in the range 0.0010.999 (e.g. "0.72"). Required for LIMIT, ICEBERG, TAKE_PROFIT, and STOP_LOSS orders.
string
Number of shares as a decimal string (e.g. "100"). Required for LIMIT, ICEBERG, TAKE_PROFIT, STOP_LOSS, and TRAILING_STOP orders, and for MARKET sell orders.
string
US dollar notional as a decimal string. Used as:
  • MARKET buy, total spend in dollars.
  • TWAP, total dollar amount to execute over the strategy duration.
  • PEGGED, alias for budget_usdc.
string
GTC (Good Till Cancelled, default) | IOC (Immediate or Cancel) | FOK (Fill or Kill). Applies to LIMIT and MARKET types.
string
Dollar budget for a PEGGED buy order. Equivalent to passing quote_amount for this order type.
number
PEGGED only. Number of CLOB ticks away from the best touch price at which the order rests. Positive values rest behind the touch; 0 rests at the touch.
number
PEGGED only. Minimum price (decimal probability) the pegged order will chase. The order will not follow the touch below this level.
number
PEGGED only. Maximum price (decimal probability) the pegged order will chase.
string
Polymarket condition ID (0x + 64 hex characters). Required for PEGGED orders.
string
"yes" or "no". Required for PEGGED orders to determine which side of the condition the order tracks.
object
Advanced execution parameters for TWAP, ICEBERG, and TRAILING_STOP orders.
object
Bracket take-profit to attach to a LIMIT or MARKET buy. Placed as a resting limit sell once the parent order fills.
object
Bracket stop-loss to attach to a LIMIT or MARKET buy. Activates as a market sell when the price touches the trigger.
string
Your own reference string (max 64 characters). Stored and echoed back; not used for idempotency (use Idempotency-Key for that).

Response

string
The order type submitted, e.g. "LIMIT".
string
CLOB order ID. Present for LIMIT, MARKET, TAKE_PROFIT, and triggered stops. Absent for managed strategies, use record_id instead.
string
Strategy record ID. Present for PEGGED, TWAP, ICEBERG, STOP_LOSS, and TRAILING_STOP orders.
string
OPEN | FILLED | PARTIALLY_FILLED | CANCELED | ACTIVE (strategies).
string
"buy" or "sell".
string
Limit price as submitted.
string
Total order size in shares.
string
Shares filled at time of response.
string
Shares still resting on the book.
string
Dollar value of fills matched so far.
string
Builder code credited for this order (may differ from submission if overridden by partner config).
string
ISO 8601 timestamp of order creation.
object
Present when bracket orders were attached. Contains take_profit and/or stop_loss sub-objects each with order_id and record_id.
array
Non-fatal advisory messages, e.g. ["bracket size capped to fill size"].
string
Human-readable status message.

Examples

Example response (LIMIT buy)

POST /v2/trade/order/batch

Places up to 20 limit orders atomically at distinct price levels. All orders share the same symbol and side, making this ideal for constructing bid or ask ladders in a single request. If any rung fails validation the entire batch is rejected. Required headers

Request body

string
required
Polymarket outcome token ID for all orders in the batch.
string
required
"buy" or "sell", applies to every rung.
array
required
Array of up to 20 price/size pairs. Each element must have a unique price.

Response

array
One entry per submitted rung, in the same order as the request.

Example


GET /v2/trade/orders/open

Returns all currently open CLOB orders on the account. Optionally filter to a single outcome token.

Query parameters

string
Filter results to orders on a specific outcome token ID.

Response

array
Array of open order objects.

DELETE /v2/trade/orders/

Cancels a single open order by its CLOB order ID.

Path parameters

string
required
The CLOB order ID to cancel.

Response

array
List of order IDs successfully cancelled.
array
List of order IDs that could not be cancelled (e.g. already filled).
number
Total number of successfully cancelled orders.

POST /v2/trade/orders/cancel-batch

Cancels up to 50 orders in a single request. Useful for clearing a subset of a ladder or removing specific bracket orders. Required headers

Request body

string[]
required
Array of up to 50 CLOB order IDs to cancel.

Response

array
Order IDs that were successfully cancelled.
array
Order IDs that could not be cancelled (already filled, invalid ID, etc.).
number
Number of successfully cancelled orders.

Example


POST /v2/trade/orders/cancel-all

Cancels every open CLOB order on the account. No request body is required. This does not cancel managed strategy records (TWAP, Iceberg, Pegged, Stops), use DELETE /v2/trade/strategies/{id} for those. Required headers

Response

array
All order IDs that were cancelled.
array
Any order IDs that could not be cancelled.
number
Total orders cancelled.
cancel-all removes resting bracket orders (take-profits and stop-loss CLOB orders) as well as plain limit orders. If you only want to remove non-bracket orders, use cancel-batch with a filtered list.