REST APITradeOrders

POST

Places a new order. There are several types of orders available - Market, Limit, TWAP, SteadyPace, and Stop (the latter three optionally support a limit price). Orders can be funded by your account balance or on margin.

  • When an order with funding type "funded" is placed, funds will be reserved from your Go account for the amount of the order. You must have sufficient available balance in your Go account to place a funded order.
  • When an order with funding type "margin" is placed, funds will be reserved from your Margin Trade Account. You must have sufficient available margin (NOP limit) to place a margin order.
  • Stop orders require a triggerPrice. When the market reaches the trigger price, the order is activated. A stop order without a limitPrice executes as a market order (stop-market). A stop order with a limitPrice places a limit order at the specified price (stop-limit).
  • Buy orders can be placed in either base or quote currency. A buy in base currency specifies an exact quantity to purchase (e.g., "buy 1 BTC"), while a buy in quote currency specifies a total spend amount (e.g., "buy $10,000 of BTC"). Similarly, sell orders can be placed in either base or quote currency.
  • When no limitPrice is provided on a base-buy or quote-sell order, the system automatically computes a protective marketable limit price derived from the current reference price. This prevents orders from executing at an unexpectedly unfavorable price. For market (Sweep) orders, the computed limit is valid for a short window to avoid leaving orders open indefinitely if the market moves away. See our Trade Guide for more details on each order type and funding options.

Requires access token scope: trade_trade

Path Params

  • accountId string required
    The ID of the account

Body Params

ONE OF

  • clientOrderId string
    Custom order ID provided by the client. This must be a unique ID for each individual order and cannot be the same across multiple requests. Can be used to ensure idempotency of order requests.

    up to 256 characters

  • product string required
    Product name e.g. BTC-USD
  • type string required
    Must be set to "market" to place a market order
  • fundingType string enum

    The funding type of the order.

    • Funded orders will be placed using the Go account balance.
    • Margin orders will be placed using the margin account balances. See our Trade Guide for more details on each funding type.

    Defaults to funded

    marginfunded
  • side string enum required
    The side of the order
    buysell
  • quantity string decimal required
    The quantity of the quantityCurrency to buy or sell.
  • quantityCurrency string required

    The quantity currency for the order. Can be in base or quote currency for both buy and sell orders.

    • Buy orders in quote currency specify a total spend amount (e.g., "buy $10,000 of BTC").
    • Buy orders in base currency specify an exact quantity to purchase (e.g., "buy 1 BTC"). When no limitPrice is provided, a protective marketable limit is computed automatically.
    • Sell orders in base currency specify an exact quantity to sell (e.g., "sell 0.5 BTC").
    • Sell orders in quote currency specify a target proceeds amount (e.g., "sell $500 of BTC"). When no limitPrice is provided, a protective marketable limit is computed automatically. e.g. If product is BTC-USD, the base currency will be BTC and the quote currency will be USD.
  • timeInForce string enum
    Time in force policy for market orders. Only IOC and FOK are supported. If not specified, defaults to IOC.
    IOCFOK

Responses

200
An order

Response Body

object

  • id string uuid required
    Unique identifier for the order. Used to reference the order in other endpoints.
  • accountId string required
    The ID of the account
  • enterpriseId string required
  • initiatedByUserId string required
  • canceledByUserId string required
  • clientOrderId string required
    Custom order ID provided by the client. This must be a unique ID for each individual order and cannot be the same across multiple requests. Can be used to ensure idempotency of order requests.

    up to 256 characters

  • time string date-time required
  • creationDate string date-time required
  • scheduledDate string date-time required
    Date to schedule the order. If not provided, the order will be placed immediately.
  • lastFillDate string date-time required
  • completionDate string date-time required
  • settleDate string date-time required
  • fundingType string enum required

    The funding type of the order.

    • Funded orders will be placed using the Go account balance.
    • Margin orders will be placed using the margin account balances. See our Trade Guide for more details on each funding type.

    Defaults to funded

    marginfunded
  • type string enum required
    The type of order to be placed. See our Trade Guide for more details on each order type.
    markettwaplimitsteady_pacestop
  • timeInForce string enum required

    Time in force policy for the order.

    • GTC (Good Till Cancelled): Order remains active until filled or cancelled.
    • IOC (Immediate or Cancel): Order fills as much as possible immediately, any unfilled remainder is cancelled.
    • FOK (Fill or Kill): The entire order must be filled immediately or it is cancelled completely. Unlike IOC, no partial fills are accepted.
    • GTD (Good Till Date): Order remains active until filled, cancelled, or the specified duration expires. Requires duration to be set.
    GTCIOCFOKGTD
  • status string enum required
    pending_openopencompletedpending_cancelcancelederrorscheduled
  • reason string enum required
    Reason for order cancellation. 'internalError' indicates an error occurred within the server while processing the order, resulting in an order cancellation. 'insufficientFunds' indicates that the order was cancelled due to shortage of funds to complete the transaction.
    internalErrorinsufficientFunds
  • reasonDescription string required
  • product string required
    Product name e.g. BTC-USD (base-quote)
  • side string enum required
    The side of the order
    buysell
  • quantity string decimal required
    The specified quantity.
  • quantityCurrency string required
    The specified quantity currency.
  • filledQuantity string decimal required
    The total base quantity filled.
  • filledQuoteQuantity string decimal required
    The total quote quantity filled.
  • leavesQuantity string decimal required

    For orders created with base currency, this field is set to the remaining unfilled base quantity.

    • Only one of leavesQuantity or leavesQuoteQuantity will be set.
    • This field is set to null for orders created with quote currency.
  • leavesQuoteQuantity string decimal required

    For orders created with quote currency, this field is set to the remaining unfilled quote quantity.

    • Only one of leavesQuantity or leavesQuoteQuantity will be set.
    • This field is set to null for orders created with base currency.
  • averagePrice string decimal required
    The average price for the order's trades.
  • limitPrice string decimal required

    The limit price. It always refers to the quote currency.

    • It's maximum precision is determined by the product's quoteDisplayPrecision field, which can be fetched from the list products endpoint.
  • triggerPrice string decimal

    The trigger price for stop orders. When the market reaches this price, the stop order is activated.

    • For buy stop-limit orders, triggerPrice must be less than or equal to limitPrice.
    • For sell stop-limit orders, triggerPrice must be greater than or equal to limitPrice.
    • It always refers to the quote currency.
  • duration integer required
    Duration of the order in minutes.
  • twapInterval integer required
    Interval length of the TWAP order in minutes.
  • rtId string required
    The request tracking ID associated with the order.
  • parameters object
    parameters object
    • isTimeSliced boolean

      The isTimeSliced field when provided determines the order's time slicing behavior:

      • If isTimeSliced is set to true, the order will be executed using a time-sliced strategy.
      • If isTimeSliced is set to false, the order will be executed using a regular TWAP strategy without time slicing.
      • If isTimeSliced is not specified, the default behavior uses a regular TWAP strategy without time slicing.
    • boundsControl string enum

      The boundsControl field when provided determines how strictly the TWAP order adheres to its target fill progression. This parameter only applies to regular TWAP orders. It is not supported for TimeSliced orders and will be ignored if provided.

      • narrow - within 3% or 3 minutes
      • standard - within 5% or 5 minutes
      • wide - within 7.5% or 7.5 minutes
      • If boundsControl is not specified, the default behavior is standard.
      narrowstandardwide
    • interval integer required
      The interval for the SteadyPace order, specified in conjunction with the interval unit.
    • intervalUnit string enum required
      The unit of time for the interval. Defaults to "minute".
      secondminutehour
    • subOrderSize string decimal required
      The size of each sub-order in the SteadyPace order.
    • variance string decimal
      Optional degree of randomization for sub-order sizes. Accepts a decimal value rounded to two decimal places between 0 and 1, representing the variation in the size of each sub-order. For example, a value of 0.20 indicates a 20% variance in sub-order sizes.
  • notes string required
    Additional notes associated with the order.
400
Bad request - Invalid order parameters

Response Body

ONE OF

  • error string required
  • errorName string required
  • reqId string required
  • context object
    Optional structured metadata for REST validation failures. The schema is fixed for client contract stability.
    context object
    • errorName string required
      Same value as the top-level errorName.
    • field string
      Request field associated with the validation failure.
    • message string
      Human-readable field-level validation message.
401
Unauthorized - Invalid or missing authentication

Response Body

object

  • error string required
  • errorName string required
  • reqId string required
  • context object
    Optional structured metadata for REST validation failures. The schema is fixed for client contract stability.
    context object
    • errorName string required
      Same value as the top-level errorName.
    • field string
      Request field associated with the validation failure.
    • message string
      Human-readable field-level validation message.
403
Forbidden - Insufficient permissions

Response Body

object

  • error string required
  • errorName string required
  • reqId string required
  • context object
    Optional structured metadata for REST validation failures. The schema is fixed for client contract stability.
    context object
    • errorName string required
      Same value as the top-level errorName.
    • field string
      Request field associated with the validation failure.
    • message string
      Human-readable field-level validation message.
409
Conflict - An identifier or resource is already in use

Response Body

object

  • error string required
  • errorName string required
  • reqId string required
422
Unprocessable Entity - JSON payload is improperly formatted

Response Body

object

  • error string required
  • errorName string required
  • reqId string required
  • context object
    Optional structured metadata for REST validation failures. The schema is fixed for client contract stability.
    context object
    • errorName string required
      Same value as the top-level errorName.
    • field string
      Request field associated with the validation failure.
    • message string
      Human-readable field-level validation message.
429
Too Many Requests - Rate limit exceeded

Response Body

object

  • error string required
  • errorName string required
  • reqId string required
  • context object
    Optional structured metadata for REST validation failures. The schema is fixed for client contract stability.
    context object
    • errorName string required
      Same value as the top-level errorName.
    • field string
      Request field associated with the validation failure.
    • message string
      Human-readable field-level validation message.
500
Internal Server Error

Response Body

object

  • error string required
  • errorName string required
  • reqId string required
  • context object
    Optional structured metadata for REST validation failures. The schema is fixed for client contract stability.
    context object
    • errorName string required
      Same value as the top-level errorName.
    • field string
      Request field associated with the validation failure.
    • message string
      Human-readable field-level validation message.