Files
GLaDOS a1d6a46f74 docs: refresh all documentation - fill 98 empty files and update changelog
Date: 2026-06-19

Changes:
- Fixed 98 empty .md files that had failed to scrape
- Updated changelog with latest entries (Jun 15, 2026: CLOB DELETE /orders limit reduced to 1000)
- Refreshed FAQ, Polymarket Learn, Developers, and other sections

Notable updates:
- Jun 15, 2026: CLOB DELETE /orders maximum batch size reduced to 1000
- Jun 1, 2026: Increased CLOB order rate limits
- May 18, 2026: builderCode added to builders endpoints
- May 14, 2026: GET /markets/keyset limit reduced to 100
2026-06-19 14:09:52 +02:00

12 KiB

Documentation Index

Fetch the complete documentation index at: https://docs.polymarket.com/llms.txt Use this file to discover all available pages before exploring further.

Cancel Order

Cancel single, multiple, or all open orders

All cancel endpoints require L2 authentication. The response always includes canceled (list of cancelled order IDs) and not_canceled (map of order IDs to failure reasons).


Cancel a Single Order

```typescript TypeScript theme={null} const resp = await client.cancelOrder("0xb816482a..."); console.log(resp); // { canceled: ["0xb816482a..."], not_canceled: {} } ```
resp = client.cancel(order_id="0xb816482a...")
print(resp)
# {"canceled": ["0xb816482a..."], "not_canceled": {}}
let resp = client.cancel_order("0xb816482a...").await?;
println!("{:?}", resp);
// CancelOrdersResponse { canceled: ["0xb816482a..."], not_canceled: {} }
curl -X DELETE "https://clob.polymarket.com/order" \
  -H "Content-Type: application/json" \
  -H "POLY_ADDRESS: ..." \
  -H "POLY_SIGNATURE: ..." \
  -H "POLY_TIMESTAMP: ..." \
  -H "POLY_API_KEY: ..." \
  -H "POLY_PASSPHRASE: ..." \
  -d '{"orderID": "0xb816482a..."}'

Cancel Multiple Orders

```typescript TypeScript theme={null} const resp = await client.cancelOrders(["0xb816482a...", "0xc927593b..."]); ```
resp = client.cancel_orders([
    "0xb816482a...",
    "0xc927593b...",
])
let resp = client.cancel_orders(&["0xb816482a...", "0xc927593b..."]).await?;
curl -X DELETE "https://clob.polymarket.com/orders" \
  -H "Content-Type: application/json" \
  -H "POLY_ADDRESS: ..." \
  -H "POLY_SIGNATURE: ..." \
  -H "POLY_TIMESTAMP: ..." \
  -H "POLY_API_KEY: ..." \
  -H "POLY_PASSPHRASE: ..." \
  -d '["0xb816482a...", "0xc927593b..."]'

Cancel All Orders

Cancel every open order across all markets:

```typescript TypeScript theme={null} const resp = await client.cancelAll(); ```
resp = client.cancel_all()
let resp = client.cancel_all_orders().await?;
curl -X DELETE "https://clob.polymarket.com/cancel-all" \
  -H "POLY_ADDRESS: ..." \
  -H "POLY_SIGNATURE: ..." \
  -H "POLY_TIMESTAMP: ..." \
  -H "POLY_API_KEY: ..." \
  -H "POLY_PASSPHRASE: ..."

Cancel by Market

Cancel all orders for a specific market, optionally filtered to a single token. Both market and asset_id are optional — omit both to cancel all orders.

```typescript TypeScript theme={null} const resp = await client.cancelMarketOrders({ market: "0xbd31dc8a...", // optional: condition ID asset_id: "52114319501245...", // optional: specific token }); ```
resp = client.cancel_market_orders(
    market="0xbd31dc8a...",
    asset_id="52114319501245...",  # optional
)
use polymarket_client_sdk_v2::clob::types::request::CancelMarketOrderRequest;

let request = CancelMarketOrderRequest::builder()
    .market("0xbd31dc8a...".parse()?)
    .asset_id("52114319501245...".parse()?)
    .build();
let resp = client.cancel_market_orders(&request).await?;
curl -X DELETE "https://clob.polymarket.com/cancel-market-orders" \
  -H "Content-Type: application/json" \
  -H "POLY_ADDRESS: ..." \
  -H "POLY_SIGNATURE: ..." \
  -H "POLY_TIMESTAMP: ..." \
  -H "POLY_API_KEY: ..." \
  -H "POLY_PASSPHRASE: ..." \
  -d '{"market": "0xbd31dc8a...", "asset_id": "52114319501245..."}'

Querying Orders

Get a Single Order

```typescript TypeScript theme={null} const order = await client.getOrder("0xb816482a..."); console.log(order.status, order.size_matched); ```
order = client.get_order("0xb816482a...")
print(order["status"], order["size_matched"])
let order = client.order("0xb816482a...").await?;
println!("{:?} {}", order.status, order.size_matched);

Get Open Orders

Retrieve all open orders, optionally filtered by market or token:

```typescript TypeScript theme={null} // All open orders const orders = await client.getOpenOrders();

// Filtered by market const marketOrders = await client.getOpenOrders({ market: "0xbd31dc8a...", });

// Filtered by token const tokenOrders = await client.getOpenOrders({ asset_id: "52114319501245...", });


```python Python theme={null}
from py_clob_client_v2 import OpenOrderParams

# All open orders
orders = client.get_orders()

# Filtered by market
market_orders = client.get_orders(
    OpenOrderParams(market="0xbd31dc8a...")
)
use polymarket_client_sdk_v2::clob::types::request::OrdersRequest;

// All open orders
let orders = client.orders(&OrdersRequest::default(), None).await?;

// Filtered by market
let request = OrdersRequest::builder()
    .market("0xbd31dc8a...".parse()?)
    .build();
let market_orders = client.orders(&request, None).await?;

OpenOrder Object

Field Type Description
id string Order ID
status string Current order status
market string Condition ID
asset_id string Token ID
side string BUY or SELL
original_size string Size at placement
size_matched string Amount filled
price string Limit price
outcome string Human-readable outcome (e.g., "Yes", "No")
order_type string Order type (GTC, GTD, FOK, FAK)
maker_address string Funder address
owner string API key of the order owner
associate_trades string[] Trade IDs this order has been included in
expiration string Unix expiration timestamp (0 if none)
created_at string Unix creation timestamp

Trade History

When an order is matched, it creates a trade. Trades progress through these statuses:

Status Terminal Description
MATCHED No Matched and sent for onchain submission
MINED No Mined on the chain, no finality yet
CONFIRMED Yes Achieved finality — trade successful
RETRYING No Transaction failed — being retried
FAILED Yes Failed permanently
```typescript TypeScript theme={null} // All trades const trades = await client.getTrades();

// Filtered by market const marketTrades = await client.getTrades({ market: "0xbd31dc8a...", });


```python Python theme={null}
from py_clob_client_v2 import TradeParams

trades = client.get_trades()

market_trades = client.get_trades(
    TradeParams(market="0xbd31dc8a...")
)
use polymarket_client_sdk_v2::clob::types::request::TradesRequest;

// All trades
let trades = client.trades(&TradesRequest::default(), None).await?;

// Filtered by market
let request = TradesRequest::builder()
    .market("0xbd31dc8a...".parse()?)
    .build();
let market_trades = client.trades(&request, None).await?;

Additional filter parameters: id, maker_address, asset_id, before, after.

The Rust SDK uses cursor-based pagination via the next_cursor parameter:

```typescript TypeScript theme={null} const page = await client.getTradesPaginated({ market: "0xbd31dc8a..." }); console.log(page.trades, page.count); // trades array + total count ```
page = client.get_trades_paginated(TradeParams(market="0xbd31dc8a..."))
// First page
let page = client.trades(&request, None).await?;
println!("{} trades, cursor: {}", page.data.len(), page.next_cursor);

// Next page
let page2 = client.trades(&request, Some(page.next_cursor)).await?;

Trade Object

Field Type Description
id string Trade ID
taker_order_id string Taker order hash
market string Condition ID
asset_id string Token ID
side string BUY or SELL
size string Trade size
price string Execution price
fee_rate_bps string Fee rate in basis points
status string Trade status (see table above)
match_time string Unix timestamp when matched
last_update string Unix timestamp of last status change
outcome string Human-readable outcome (e.g., "Yes")
maker_address string Maker's funder address
owner string API key of the trade owner
transaction_hash string Onchain transaction hash
bucket_index number Index for trade reconciliation
trader_side string TAKER or MAKER
maker_orders MakerOrder[] Maker orders that filled this trade
A single trade can be split across multiple onchain transactions due to gas limits. Use `bucket_index` and `match_time` to reconcile related transactions back to a single logical trade.

Order Scoring

Check if your resting orders are eligible for maker rebates scoring:

```typescript TypeScript theme={null} // Single order const scoring = await client.isOrderScoring({ orderId: "0x..." });

// Multiple orders const batch = await client.areOrdersScoring({ orderIds: ["0x...", "0x..."], });


```python Python theme={null}
from py_clob_client_v2 import OrderScoringParams, OrdersScoringParams

scoring = client.is_order_scoring(
    OrderScoringParams(orderId="0x...")
)

batch = client.are_orders_scoring(
    OrdersScoringParams(orderIds=["0x...", "0x..."])
)
// Single order
let scoring = client.is_order_scoring("0x...").await?;

// Multiple orders
let batch = client.are_orders_scoring(&["0x...", "0x..."]).await?;

Next Steps

Attribute orders to your builder account for volume credit Understand fee structures and maker rebates