KUEST_ADDRESS, KUEST_SIGNATURE, KUEST_TIMESTAMP, KUEST_API_KEY, and KUEST_PASSPHRASE. Review how to obtain them in the Authentication overview or use the managed console at auth.kuest.com.409 with {"error":"system_paused"}. Individually paused books still reply with 409 and {"error":"condition_paused"}. Make sure the owner field matches the KUEST_ADDRESS header; otherwise the API returns 400 and {"error":"owner_address_mismatch"}.status field that reflects the immediate lifecycle state:
| Status | Meaning |
|---|---|
live | Order accepted and resting on the book. |
matched | Order matched instantly against existing liquidity. |
delayed | Order is marketable but matching is deferred temporarily. |
unmatched | Order was marketable but could not be matched after the delay period. |
| Field | Type | Required | Description |
|---|---|---|---|
owner | string | Yes | Polygon address that owns the API key. Must match the KUEST_ADDRESS header. |
orderType | string | Yes | Time-in-force policy for the order (FOK, FAK, GTC, GTD). |
postOnly | boolean | No | When true, the order must rest on the book (GTC/GTD only). |
order | object | Yes | Full order payload described below. |
GTD orders you must supply an order.expiration in the future. GTC, FAK, and FOK may omit expiration; the engine simply ignores the value when it is not needed.order object| Field | Type | Required | Description |
|---|---|---|---|
tokenId | string | Yes | Identifier of the token/outcome being traded. |
conditionId | string | Yes | Market condition identifier tied to the token. |
expiration | string | Conditional | Unix timestamp (seconds) when the order becomes invalid. Required for GTD, optional otherwise. |
maker | string | Yes | Address that holds the asset being offered. |
signer | string | Yes | Address that produced the signature authorizing the order. |
taker | string | Yes | Counterparty address. Use the zero address for open orders. |
makerAmount | string | Yes | Quantity provided by the maker, denominated with fixed precision. |
takerAmount | string | Yes | Quantity expected from the taker. Must stay within allowed tick sizes. |
side | string | Yes | Either BUY or SELL. |
metadata | object|null | No | Optional JSON metadata stored with the order. |
nonce | string | Yes | Monotonic value chosen by the maker to guard against reuse. |
feeRateBps | string | Yes | Maker fee rate in basis points. |
salt | string | Yes | Unique entropy for replay protection. Reuse causes duplicate rejection. |
signatureType | number | Yes | 0 = EOA, 1 = proxy signer, 2 = Gnosis Safe signer. |
signature | string | Yes | Hex-encoded signature produced over the order payload. |
makerAmount, takerAmount, nonce, feeRateBps, expiration) must be sent as strings to avoid precision issues during parsing. side must be the uppercase string BUY or SELL. owner must match the KUEST_ADDRESS header supplied with the request.| Type | Partial fills? | Rests on the book? | Auto expiration? |
|---|---|---|---|
| FOK (Fill-Or-Kill) | ❌ No | ❌ No | ✅ Immediately if not 100% filled |
| FAK (Fill-And-Kill / IOC) | ✅ Yes | ❌ No | ✅ Any remaining size cancels right away |
| GTC (Good-Til-Cancelled) | ✅ Yes | ✅ Yes, until cancelled | ❌ No |
| GTD (Good-Til-Date) | ✅ Yes | ✅ Yes, until the given timestamp | ✅ At the specified expiration time |
GTD, the engine enforces a one-minute safety buffer. If you need the order to expire in 90 seconds, set expiration = now + 90 + 60.
201 Created with success: true, even for FAK/FOK orders that may cancel remaining size after partial execution.orderId is the ULID generated for storage. Use GET /data/order/{id} to check final status and filled amounts.orderHashes currently returns an empty array; on-chain settlement hashes will populate this field in the future.DELETE /order.GET /data/order/{id} are:
| Status | Meaning |
|---|---|
open | Order is resting on the book. |
partially_filled | Order remains on the book with some fills. |
filled | Order fully executed. |
cancelled | Order removed. For IOC/FAK, partial fills still return cancelled with non-zero filled amounts. |
success to false (or true for warnings) and includes an errorCode alongside errorMsg. Current error codes follow the live engine responses:
| errorCode | success | errorMsg (default) | Notes |
|---|---|---|---|
INVALID_ORDER_MIN_TICK_SIZE | true | order is invalid. Price breaks minimum tick size rules | Price implied by maker/taker amounts is outside the permitted [0, 1_000_000] window. |
INVALID_ORDER_MIN_SIZE | true | order is invalid. Size lower than the minimum | Maker or taker amount is non-positive or below minimum size. |
INVALID_ORDER_DUPLICATED | true | order is invalid. Duplicated. Same order has already been placed, can’t be placed again | Reserved for future duplicate protection. |
INVALID_ORDER_NOT_ENOUGH_BALANCE | true | not enough balance / allowance | Reserved for balance/allowance enforcement. |
INVALID_ORDER_EXPIRATION | true | invalid expiration | Missing, past, or negative expiration. |
INVALID_ORDER_ERROR | true | could not insert order | Generic validation failure. |
EXECUTION_ERROR | true | could not run the execution | Internal engine/database failure while inserting. |
ORDER_DELAYED | false | order match delayed due to market conditions | Reserved for delayed matching path. |
DELAYING_ORDER_ERROR | true | error delaying the order | Reserved for delayed matching errors. |
FOK_ORDER_NOT_FILLED_ERROR | false | order couldn’t be fully filled, FOK orders are fully filled/killed | Returned when a fill-or-kill order cannot fill 100%. |
MARKET_NOT_READY | false | the market is not yet ready to process new orders | Reserved for markets warming up. |
success is true, errorCode and errorMsg may be populated to surface warnings without rejecting the order.Checksummed wallet address performing the request.
API key obtained from the L1 derivation endpoint.
64 character hexadecimal passphrase associated with the API key.
Millisecond epoch timestamp (string) used for freshness checks.
Hex-encoded HMAC-SHA256 signature built from the L2 signing string.
Order placement result (rejected with success=false)
Indicates whether the order was accepted.
Human-readable status for the placement.
ULID of the submitted order when accepted.
Settlement hashes for immediate matches (empty if none).
Machine-readable error code when placement fails.