Submits a new order to the Forkast central limit order book.
FORKAST_ADDRESS, FORKAST_SIGNATURE, FORKAST_TIMESTAMP, FORKAST_API_KEY, and FORKAST_PASSPHRASE. Review how to obtain them in the Authentication overview or use the managed console at auth.forka.st.409 with {"error":"system_paused"}. Individually paused books still reply with 409 and {"error":"condition_paused"}. Make sure the owner field matches the FORKAST_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 FORKAST_ADDRESS header. |
orderType | string | Yes | Time-in-force policy for the order (FOK, FAK, GTC, GTD). |
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. |
referrer | string | Yes | Referrer identifier (use the zero address when unused). |
affiliate | string|null | No | Affiliate beneficiary address; provide null when not used. |
affiliatePercentage | integer|null | No | Affiliate share in basis points. |
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 FORKAST_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.Order accepted but the matching engine returned a business error (payload will have success: false).
Indicates whether the order was accepted.
true
Human-readable status for the placement.
""
Settlement hashes for immediate matches (empty if none).
[]Machine-readable error code when placement fails (ex: FOK_ORDER_NOT_FILLED_ERROR, EXECUTION_ERROR).
null
ULID of the submitted order when accepted.
"01JABCD4XY7M5Q1PQW8ZMN9ABC"