---
title: Order Entry
description: Understand what an order is, how time in force, post-only, and self-trade prevention shape it, and how to place, amend, and cancel orders.
---

An order is an instruction to buy or sell YES contracts in one market at a limit price. It belongs to one account, carries your own `client_order_id` for correlation, and is identified by the exchange-assigned `order_id` once accepted. See [Markets and Trading](/concepts/markets-and-trading) for YES-side pricing and units.

## Time in Force

| Value | Meaning |
| --- | --- |
| `gtc` | Good till canceled. Rests until it fills or you cancel it. |
| `day` | Rests until the end of the trading day. |
| `gtt` | Good till time. Rests until the instant you set as `expires_at`, then expires. |
| `ioc` | Immediate or cancel. Fills what it can on arrival; the rest is canceled. |
| `fok` | Fill or kill. Fills completely on arrival or is canceled entirely. |

An order read back from the exchange can also report `unknown` when it was placed through another channel with a time in force the exchange does not model. `unknown` is never accepted when placing an order.

## Post-Only

A post-only order only ever adds liquidity. If it would cross the book on placement, the exchange rejects it instead of trading. Post-only cannot be combined with `ioc` or `fok`.

## Self-Trade Prevention

Orders placed under the same member never trade with each other, whichever user or account placed them. `self_trade_prevention_type` on the incoming order chooses which order gives way when it would match one of your member's resting orders:

| Value | Behavior |
| --- | --- |
| `placed` | Cancels the incoming order when it would self-trade. The resting order stays open. This is the default. |
| `resting` | Cancels the conflicting resting order and lets the incoming order continue matching. |

Self-trade prevention cannot be disabled.

## Order Status

| Status | Meaning |
| --- | --- |
| `resting` | Open on the book with nothing filled yet. |
| `partially_filled` | Open on the book with some quantity filled. |
| `filled` | Completely filled. |
| `canceled` | Canceled before filling completely. |
| `expired` | Its time in force ended before it filled completely. |
| `rejected` | Rejected by the exchange; `rejection_reason` says why. |

## Rejection Reasons

| Reason | Meaning |
| --- | --- |
| `duplicate_client_order_id` | The `client_order_id` was already used on this account. |
| `self_trade_prevented` | The order would have traded against your member's own order. |
| `market_closed` | The market is not open for trading. |
| `insufficient_funds` | The account lacks the balance to carry the order. |
| `price_out_of_bounds` | The price is outside the market's limits. |
| `quantity_out_of_bounds` | The quantity or notional is outside the market's limits. |
| `post_only_would_cross` | A post-only order would have traded on arrival. |
| `no_liquidity` | Nothing was available to trade against. |
| `quote_unavailable` | The quote named by an accept no longer exists or has lapsed. |
| `quote_terms_mismatch` | The accept's side, price, or quantity did not match the quote. |
| `quote_already_accepted` | The quote or its RFQ is already in last look. |
| `rate_limited` | The exchange's global rate limit was exceeded. |
| `expires_at_invalid` | A `gtt` order's `expires_at` had already passed when the exchange received it. |
| `exchange_rejected` | The exchange rejected the order for a reason UDX does not classify. |

## Amend and Cancel

An amendment changes a resting order's price, quantity, or both, in place. The new quantity is the total, not a delta, and must exceed the quantity already filled. Queue priority is preserved only when the quantity decreases at an unchanged price; any other change moves the order to the back of its price level.

A cancellation ends one resting order. A bulk cancellation ends every open order the credential can act for, optionally narrowed to one market or to named accounts; orders that fill while the cancellation is in flight are unaffected. A bulk cancellation is complete once a read of your working orders, those `resting` or `partially_filled`, returns none.
