> ## Documentation Index
> Fetch the complete documentation index at: https://enterprise.predexon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Place Order

> Place a buy or sell order — Predexon routes to best execution

```http theme={null}
POST /v1/accounts/{accountId}/orders
```

Place a buy or sell order. The user does **not** specify a venue — Predexon routes.

**Request**

```json theme={null}
{
  "predexonId": "px-abc123def456",
  "side": "buy",
  "type": "market",
  "amount": 50.00
}
```

| Field        | Type                    | Description                                                                                                                                                 |
| ------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `predexonId` | string                  | Canonical outcome identifier from the Data API. **Each outcome (Yes / No) has its own `predexonId`** — there is no separate `outcome` field on the request. |
| `side`       | `"buy"` \| `"sell"`     |                                                                                                                                                             |
| `type`       | `"limit"` \| `"market"` |                                                                                                                                                             |
| `size`       | number                  | Number of shares.                                                                                                                                           |
| `amount`     | number                  | USDC notional.                                                                                                                                              |
| `price`      | number                  | Limit price, strictly between 0 and 1 (exclusive).                                                                                                          |

`size`, `amount`, and `price` are conditionally required by order type:

| Order type       | Required        | Rejected          |
| ---------------- | --------------- | ----------------- |
| Limit BUY / SELL | `size`, `price` | `amount`          |
| Market BUY       | `amount`        | `size`, `price`   |
| Market SELL      | `size`          | `amount`, `price` |

**Response** `201 Created`

Market orders fill atomically — the response shows the executed fill. For a limit order that doesn't fill immediately, `status` is `"open"`, `filled` is `"0"`, `averagePrice` is `null`, and `metadata.fills` is empty until fills arrive. Use [Get Order](/ledger/api-reference/orders/get-order) or [List Trades](/ledger/api-reference/trades/list-trades) to inspect post-placement state.

```json theme={null}
{
  "orderId": "ord_3e2b...",
  "predexonId": "px-abc123def456",
  "title": "Will Trump win the 2028 election?",
  "outcome": "Yes",
  "side": "buy",
  "type": "market",
  "status": "filled",
  "filled": "100",
  "averagePrice": "0.495",
  "amount": "50.00",
  "notional": "49.50",
  "fee": "0.50",
  "createdAt": "2026-05-06T12:00:00.214Z",
  "filledAt": "2026-05-06T12:00:00.832Z",
  "metadata": {
    "fills": [
      { "source": "venue", "venue": "polymarket", "size": "50", "fillPrice": "0.50", "fee": "0.25" },
      { "source": "venue", "venue": "limitless", "size": "50", "fillPrice": "0.49", "fee": "0.25" }
    ]
  }
}
```

The top-level fields (`status`, `filled`, `averagePrice`, `notional`, `fee`) are the aggregated source of truth. `metadata.fills` shows the per-source breakdown so users can verify routing and reconcile against on-chain activity.

Math: `50 × $0.50 + 50 × $0.49 = $49.50` notional + `$0.50` fees = `$50 = amount`; avg `$0.495`.

Trading fees on venue fills are venue-passthrough: top-level `fee` is the sum of `metadata.fills[].fee`. RFQ fills carry no explicit fee (the market maker's compensation is baked into the quoted `fillPrice`).

A fill from a market maker looks like this — `source: "rfq"` with a `marketMaker` identifier instead of `venue`:

```json theme={null}
{ "source": "rfq", "marketMaker": "mm-acme", "size": "50", "fillPrice": "0.495", "fee": "0" }
```

See [Liquidity sources](/ledger/concepts#liquidity-sources) for how the router decides between venue order books and RFQ market makers.

There is no modify endpoint — to change a price or size on an open limit order, [cancel](/ledger/api-reference/orders/cancel-order) it and place a new one.

## Status values

| Status      | Meaning                                                                                     |
| ----------- | ------------------------------------------------------------------------------------------- |
| `open`      | Limit order accepted, awaiting fills (or partially filled).                                 |
| `filled`    | Fully filled.                                                                               |
| `cancelled` | Cancelled before fully filling. The filled portion (if any) remains as a position.          |
| `expired`   | Limit order reached its time-in-force expiry without fully filling.                         |
| `pending`   | Transitional — order is being submitted to venues but not yet acknowledged.                 |
| `failed`    | Submission rejected after acceptance (e.g., no venue had usable liquidity, treasury error). |
