---
title: "Create Order"
method: POST
path: "/v2/orders"
tags: ["orders"]
---

# Create Order

`POST /v2/orders`

## Request

- Base URL: `https://api.exchange.bullish.com/trading-api`
- URL: `https://api.exchange.bullish.com/trading-api/v2/orders`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/bullish/apis/bullish-trading-api/docs/v2/orders/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates an order, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header.

This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field ordering 
and addition of null fields in the request body. Quantities and prices does not require strict precision. 
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.

**Ratelimited:** `True`. Higher tiers of rate limits available by providing the `BX-RATELIMIT-TOKEN` request header.

## Headers

- `BX-SIGNATURE` string, required
- `BX-TIMESTAMP` string, required
- `BX-NONCE` string, required
- `BX-NONCE-WINDOW-ENABLED` 'false' | 'true'
- `BX-REFERRER` string

## Request body

- CreateOrderCommandV3
  - `commandType` string, required: The command type, it must be 'V3CreateOrder'
  - `clientOrderId` string: Unique numeric (i64) identifier generated on the client side expressed as a string value
  - `symbol` string, required: market symbol. E.g. `BTCUSDC`
  - `type` string, required: order type can have the following string values `"LIMIT"`, `"MARKET"`, `"STOP_LIMIT"`, `"POST_ONLY"`. `"MARKET"` and `"STOP_LIMIT"` are not applicable for Options
  - `side` string, required: order side can have the following string values `"BUY"`, `"SELL"`
  - `price` string: see [asset value](/rest/general/price-quantity-precision) format
  - `stopPrice` string: see [asset value](/rest/general/price-quantity-precision) format
  - `quantity` string, required: see [asset value](/rest/general/price-quantity-precision) format
  - `timeInForce` string, required: time in force can have the following string values `"GTC"`, `"FOK"`, `"IOC"`, `"GTX"` (Good Till Crossing - for auction orders), see [details](/rest/general/order-type)
  - `allowBorrow` boolean: allows to borrow on the order
  - `isMMP` boolean: Indicate if the order is subject to `Market Maker Protection`. Only applicable to option markets
  - `tradingAccountId` string, required: unique trading account ID

## Response `200`

Status OK. The create order command was successfully acknowledged. To check the current status of the order, query [Get Order by ID](/rest/api/get-order-by-id-v-2) using the `orderId` received in the response payload. Please consult the section [How To Ensure The Order Of *Create Order* or *Cancel Order* Requests](/rest/order-processing-create-cancel-request-mechanism) for more information.

- CreateOrderCommandResponseV3
  - `message` string, required: message
  - `requestId` string, required
  - `orderId` string, required
  - `clientOrderId` string: unique numeric identifier generated on the client side expressed as a string value

## Other responses

- `400`: Bad Request For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
- `401`: Not Authenticated
- `403`: Access Forbidden
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/bullish/apis/bullish-trading-api.md) - [All operations](https://skmtc.dev/bullish/apis/bullish-trading-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bullish/apis/bullish-trading-api/revisions/df5d69ccedcf?raw)
