{
  "message": "createOrder",
  "content": {
    "clientRequestId": "0835bf3e-4a20-41f0-908d-8213f2b7a285",
    "price": "2000.90",
    "quantity": "1.00",
    "orderType": "buy",
    "tradeType": "limit",
    "postOnly": false
  }
}
// Request received successfully
{
  "resultType": "createOrder",
  "data": {
    "statusCode": 202,
    "body": "order created, pending acceptance",
    "order": {
        "market": "ETH-USD",
        "orderId": "01HZ5J70FCBNJAS7TVPVB4GAAG",
        "orderType": "buy",
        "tradeType": "limit",
        "price": "3600",
        "quantity": "1",
        "filledQuantity": "0",
        "leverage": "1",
        "createdAt": 1746642892940,
        "updatedAt": 1746642892940,
        "orderStatus": "pending",
        "clientRequestId": "0835bf3e-4a20-41f0-908d-8213f2b7a285",
        "postOnly": true
    },
    "clientRequestId": "0835bf3e-4a20-41f0-908d-8213f2b7a285"
  },
  "connectionId": "KNal9ekeCYcCIBA="
}
This page is about creating limit orders. In the request, you must specify "tradeType": "limit". For market orders, please see here.

Unique Client Request ID

For the current WebSocket request, you can optionally include a unique client request ID in the request body. The same client request ID will be found in the response and is used to match the response to the request. The client request ID must be a UUID.

Rate Limits

We reserve the right to ban API access if rate limits are not respected.Exceeding Rate Limits:
  • When a 429 is received, it’s your obligation as an API user to back off and not spam the API.
  • Repeatedly violating rate limits and/or failing to back off after receiving 429 responses could result in a ban.
We enforce an account level rate limit shared by all WebSocket and REST API requests across all markets. For market makers, the limit is 7000 requests per minute. For retail and institutional users, the limit is 250 requests per minute. If you exceed this limit, you will receive a 429 Too Many Requests response. Note that the rate limit counter is updated every minute (not every second).

Open Order Limits

To prevent abuse, we enforce a limit on the number of open orders per market. The maximum number of open orders is 80 per market for market makers and 40 for other API users.

Price and quantity restrictions

The order price must be within 50% of the current index price for the market. Otherwise, the order will be rejected with a 400 status code. We also enforce a tick size, lot size and minimum order value for each market. Please refer to Product Specifications page for details.

Order Quantity Fields

In the order object, quantity represents the remaining quantity and filledQuantity represents the cumulative filled quantity. The two values will add up to the original order quantity.

Cross-Leverage Multiplier

We use a cross-leverage approach in our trading platform. This means leverage is applied at the account level rather than the market or trade level. If you haven’t set a leverage value for your account, it will default to 1. To update the leverage, you can use Update Leverage request.

Acknowledgment And Confirmation

When you place an order, you will first receive a response to acknowledge that the request has been received. Then you will receive another response to confirm that the order has been successfully created. There are three differences between these two responses:
AcknowledgmentConfirmation
Bodyorder created, pending acceptanceorder accepted
Order Statuspendingactive
Status Code202200

Post-Only Option For Limit Orders

When placing a limit order, you can choose to set the postOnly option to true or false. By default, this option is set to false, which means the order may match with an existing order in the order book and you may become the taker. We provide a post-only option for limit orders. When this option is set to true, the order will only be placed if it does not match with an existing order in the order book. Using post-only orders will ensure that you are always the maker and never the taker. If the order would match with an existing order, you will first receive the normal Acknowledgment and Confirmation responses, followed by a 400 response with resultType: rejectOrder. For more details, refer to ourOrder Rejected Notifications

Receive Window

To ensure that your requests are processed in a timely manner, we enforce a receive window of 2 seconds for all create order requests. If the request is not processed within this time frame, it will be rejected with a 400 status code and an error message receive window exceeded, order rejected indicating that the request has timed out. The order status in the response will be set to rejected. You can then retry the request with a new clientRequestId.

URL

This stream can be subscribed per market and you will need to pass in the market in the URL query. See below.

Query params

market
string
required
Example value: ETH-USD. To get all supported markets, call /api/v1/markets endpoint.

Headers

See Authorization section on how to retrieve authorization token. Once token is received, set Sec-WebSocket-Protocol headers in the WebSocket handshake request or on connect().
Sec-WebSocket-Protocol
string
required
Example value (authorization token) :
authorization#eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdGFnaW5nLmZ1bmdpYmxlLnh5eiIsInN1YiI6ImQxM2I1MzBmLWFmNzMtNDBmOS04ZjhlLWVkNzk1OTU3YTU3ZiIsImF1ZCI6WyJzdGFnaW5nLWFwcC5mdW5naWJsZS54eXoiXSwiZXhwIjoxNzAzMzA1NzQwLCJpYXQiOjE3MDMzMDM5NDB9.vsHe4G_yEkRfz8XNoTKcX83udA-LUysWD4q80wfCC8k
{
  "message": "createOrder",
  "content": {
    "clientRequestId": "0835bf3e-4a20-41f0-908d-8213f2b7a285",
    "price": "2000.90",
    "quantity": "1.00",
    "orderType": "buy",
    "tradeType": "limit",
    "postOnly": false
  }
}
// Request received successfully
{
  "resultType": "createOrder",
  "data": {
    "statusCode": 202,
    "body": "order created, pending acceptance",
    "order": {
        "market": "ETH-USD",
        "orderId": "01HZ5J70FCBNJAS7TVPVB4GAAG",
        "orderType": "buy",
        "tradeType": "limit",
        "price": "3600",
        "quantity": "1",
        "filledQuantity": "0",
        "leverage": "1",
        "createdAt": 1746642892940,
        "updatedAt": 1746642892940,
        "orderStatus": "pending",
        "clientRequestId": "0835bf3e-4a20-41f0-908d-8213f2b7a285",
        "postOnly": true
    },
    "clientRequestId": "0835bf3e-4a20-41f0-908d-8213f2b7a285"
  },
  "connectionId": "KNal9ekeCYcCIBA="
}