Breaking changes
Place Order — POST /v1/pm/events/{eventId}/markets/{marketId}/orders
This is a breaking change. All existing integrations must be updated.
Request body changes
| Change | Before | After |
|---|
| Outcome field | outcome (YES / NO) | outcomeId (UUID of the outcome) |
| Order type | Implicit (market order if no price) | type field required (LIMIT or MARKET) |
New optional fields (CLOB markets)
| Field | Type | Description |
|---|
timeInForce | string | GTC, GTD, FAK, or FOK. Defaults to GTC for limit orders, FAK for market orders. |
postOnly | boolean | If true, the order is rejected instead of crossing the spread. Limit orders only. |
maxSlippage | number | Maximum acceptable slippage for market orders (0.00–1.00). |
expiresAt | string | ISO 8601 expiration timestamp. Required for GTD orders. |
Migration guide
Before:
{
"side": "BUY",
"outcome": "YES",
"amount": 100,
"currency": "USD",
"price": 0.70
}
After:
{
"side": "BUY",
"outcomeId": "c3d4e5f6-a7b8-9012-cdef-345678901234",
"amount": 100,
"type": "LIMIT",
"currency": "USD",
"price": 0.70,
"timeInForce": "GTC"
}
To get the outcomeId, use the Get Event endpoint — each outcome in a market has an id field.
Get Quote — POST /v1/pm/events/{eventId}/markets/{marketId}/quote
Request body changes
| Change | Before | After |
|---|
| Outcome field | outcome (YES / NO) | outcomeId (UUID of the outcome) |
Migration guide
Before:
{
"side": "BUY",
"outcome": "YES",
"amount": 100,
"currency": "USD"
}
After:
{
"side": "BUY",
"outcomeId": "c3d4e5f6-a7b8-9012-cdef-345678901234",
"amount": 100,
"currency": "USD"
}
The Place Order response now uses a unified order key instead of separate ammOrder / clobOrder keys:
Before:
{
"engine": "CLOB",
"clobOrder": { ... }
}
After:
{
"engine": "CLOB",
"order": { ... }
}
The engine field (AMM or CLOB) remains unchanged.