---
title: "Create a new order"
method: POST
path: "/v0/orders"
tags: ["Orders"]
---

# Create a new order

`POST /v0/orders`

## Headers

- `Idempotency-Key` string, nullable

## Request body

- MarketApiCreateOrderRequest
  - `side` 'sell' | 'buy', required
  - `instance_type` string
  - `quantity` integer, required
  - `start_at` string, required — A date/time value that can be either "NOW" or an ISO 8601 datetime string
  - `end_at` string, required — A date/time value that can be either "NOW" or an ISO 8601 datetime string
  - `price` integer, required — Price in cents
  - `flags` MarketApiOrderFlags — Configure more fine grained order behavior.
    - `ioc` boolean — If true, the order will be automatically cancelled if it doesn't immediately fill when being placed.
    - `post_only` boolean — If true, places the order straight into the book without trying to match against existing orders.
    - `market` boolean — If true, ignores the set limit price and matches any price that is available.
    - `prorate` boolean — If the order start time should be automatically changed to "now" once start time < "now", proportionally changing it's limit price to reflect it's shorter duration.
  - `colocate_with` MarketApiContractId[] — A contract to colocate with. This overrides the instance_type if specified.
  - `cluster` string

## Response `201`

Order created successfully

- MarketApiCreateOrderResponse
  - `object` 'order', required
  - `status` 'pending' | 'filled' | 'cancelled', required
  - `id` string, required
  - `idempotency_key` string, nullable

## Other responses

- `400` — Invalid request parameters
- `401` — Unauthorized - missing or invalid authentication token
- `403` — Forbidden - account frozen, insufficient credits, unauthorized seller, or trading halted
- `404` — Not found - contract or cluster not found
- `426` — Upgrade required - legacy account needs migration
- `500` — Internal server error

## Changes

- **2026-05-15** `b819ba3108b3` — 18 breaking, 6 info
  - removed the required property `details` from the response with the `400` status
  - removed the required property `details` from the response with the `401` status
  - removed the required property `details` from the response with the `403` status
  - removed the required property `details` from the response with the `404` status
  - …20 more
- **2026-02-11** `73ad90aa5d19` — 1 warning, 1 info
  - changed the pattern of the request property `colocate_with/items/` from `"cont"_[0-9a-zA-Z]+` to `cont_[0-9a-zA-Z_-]{1,21}`
  - the `id` response's property pattern was changed from `"ordr"_[0-9a-zA-Z]+` to `ordr_[0-9a-zA-Z_-]{1,21}` for the status `201`
- **2026-01-15** `60bc3e1c43c0` — 7 breaking, 4 info
  - added the new required request property `end_at`
  - added the new required request property `price`
  - added the new required request property `quantity`
  - added the new required request property `side`
  - …7 more
- **2025-12-09** `00ce4132845e` — 1 breaking, 1 info
  - removed `#/components/schemas/market-api_ClusterName` from the `oneOf[subschema #1: Buy Order]/cluster` request property `oneOf` list
  - added `#/components/schemas/market-api_ZoneName` to the `oneOf[subschema #1: Buy Order]/cluster` request property `oneOf` list

[Change history](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation/changes/v0/orders/post.md)

---

[API](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation.md) · [All operations](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sfcompute/san-francisco-compute-documentation/revisions/93dd7661e9bb/schema)
