Place Order
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 alimitPriceexecutes as a market order (stop-market). A stop order with alimitPriceplaces 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
limitPriceis 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
-
accountIdstring requiredThe ID of the account
Body Params
ONE OF
-
clientOrderIdstringCustom 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. -
productstring requiredProduct name e.g. BTC-USD -
typestring requiredMust be set to "market" to place a market order -
fundingTypestring enumThe 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.
marginfunded -
sidestring enum requiredThe side of the orderbuysell -
quantitystring decimal requiredThe quantity of thequantityCurrencyto buy or sell. -
quantityCurrencystring requiredThe 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
limitPriceis 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
limitPriceis provided, a protective marketable limit is computed automatically. e.g. If product isBTC-USD, the base currency will beBTCand the quote currency will beUSD.
-
timeInForcestring enumTime in force policy for market orders. Only IOC and FOK are supported. If not specified, defaults to IOC.IOCFOK
-
clientOrderIdstringCustom 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. -
productstring requiredProduct name e.g. BTC-USD -
typestring requiredMust be set to "limit" to place a limit order -
fundingTypestring enumThe 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.
marginfunded -
sidestring enum requiredThe side of the orderbuysell -
quantitystring decimal required -
quantityCurrencystring requiredThe quantity currency. Can be in base or quote currency for both buy and sell orders.
- Buy orders in base currency specify an exact quantity to purchase.
- Buy orders in quote currency specify a total spend amount.
- Sell orders in base currency specify an exact quantity to sell.
- Sell orders in quote currency specify a target proceeds amount.
e.g. If product is
BTC-USD, the base currency will beBTCand the quote currency will beUSD.
-
limitPricestring decimal requiredThe limit price. It always refers to the quote currency.
- It's maximum precision is determined by the product's
quoteDisplayPrecisionfield, which can be fetched from the list products endpoint.
- It's maximum precision is determined by the product's
-
durationintegerDuration of the limit order in minutes. When set, the order uses GTD (Good Till Date) time in force and expires after the specified duration. Cannot be combined with timeInForce=GTC. For orders that are good till cancelled, omit duration and use timeInForce=GTC. -
timeInForcestring enumTime in force policy for limit orders. Supported values: GTC, IOC, FOK, GTD. If not specified, defaults to GTC. Whendurationis provided, the order automatically uses GTD regardless of this field. GTD requiresdurationto be set. GTC cannot be combined withduration.GTCIOCFOKGTD
-
clientOrderIdstringCustom 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. -
productstring requiredProduct name e.g. BTC-USD -
typestring requiredMust be set to "twap" to place a TWAP order -
fundingTypestring enumThe 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.
marginfunded -
sidestring enum requiredThe side of the orderbuysell -
quantitystring decimal required -
quantityCurrencystring requiredThe quantity currency. Can be in base or quote currency for both buy and sell orders.
- Buy orders in base currency specify an exact quantity to purchase. When no
limitPriceis provided, a protective marketable limit is computed automatically. - Buy orders in quote currency specify a total spend amount.
- Sell orders in base currency specify an exact quantity to sell.
- Sell orders in quote currency specify a target proceeds amount. When no
limitPriceis provided, a protective marketable limit is computed automatically. e.g. If product isBTC-USD, the base currency will beBTCand the quote currency will beUSD.
- Buy orders in base currency specify an exact quantity to purchase. When no
-
limitPricestring decimalThe limit price. It always refers to the quote currency.
- It's maximum precision is determined by the product's
quoteDisplayPrecisionfield, which can be fetched from the list products endpoint.
- It's maximum precision is determined by the product's
-
durationinteger requiredDuration of the TWAP order in minutes. Must be greater than 0. -
intervalintegerInterval of the time-sliced TWAP order in minutes. Only required ifisTimeSlicedistrue. -
scheduledDatestring date-timeDate to schedule the order. If not provided, the order will be placed immediately. -
parametersobjectparameters object
-
isTimeSlicedbooleanThe 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.
-
boundsControlstring enumThe 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
-
-
clientOrderIdstringCustom 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. -
productstring requiredProduct name e.g. BTC-USD -
typestring requiredMust be set to "steady_pace" to place a Steady Pace order -
fundingTypestring enumThe 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.
marginfunded -
sidestring enum requiredThe side of the orderbuysell -
quantitystring decimal required -
quantityCurrencystring requiredThe quantity currency. Can be in base or quote currency for both buy and sell orders.
- Buy orders in base currency specify an exact quantity to purchase. When no
limitPriceis provided, a protective marketable limit is computed automatically. - Buy orders in quote currency specify a total spend amount.
- Sell orders in base currency specify an exact quantity to sell.
- Sell orders in quote currency specify a target proceeds amount. When no
limitPriceis provided, a protective marketable limit is computed automatically. e.g. If product isBTC-USD, the base currency will beBTCand the quote currency will beUSD.
- Buy orders in base currency specify an exact quantity to purchase. When no
-
limitPricestring decimalThe limit price. It always refers to the quote currency.
- It's maximum precision is determined by the product's
quoteDisplayPrecisionfield, which can be fetched from the list products endpoint.
- It's maximum precision is determined by the product's
-
scheduledDatestring date-timeDate to schedule the order. If not provided, the order will be placed immediately. -
parametersobjectparameters object
-
intervalinteger requiredThe interval for the SteadyPace order, specified in conjunction with the interval unit. -
intervalUnitstring enum requiredThe unit of time for the interval. Defaults to "minute".secondminutehour -
subOrderSizestring decimal requiredThe size of each sub-order in the SteadyPace order. -
variancestring decimalOptional 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.
-
-
clientOrderIdstringCustom 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. -
productstring requiredProduct name e.g. BTC-USD -
typestring requiredMust be set to "stop" to place a stop order -
fundingTypestring enumThe 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.
marginfunded -
sidestring enum requiredThe side of the orderbuysell -
quantitystring decimal requiredThe quantity of thequantityCurrencyto buy or sell. -
quantityCurrencystring requiredThe quantity currency. Can be in base or quote currency for both buy and sell orders.
- Buy orders in base currency specify an exact quantity to purchase.
- Buy orders in quote currency specify a total spend amount.
- Sell orders in base currency specify an exact quantity to sell.
- Sell orders in quote currency specify a target proceeds amount.
e.g. If product is
BTC-USD, the base currency will beBTCand the quote currency will beUSD.
-
triggerPricestring decimal requiredThe trigger price for stop orders. When the market reaches this price, the stop order is activated.
- For buy stop-limit orders,
triggerPricemust be less than or equal tolimitPrice. - For sell stop-limit orders,
triggerPricemust be greater than or equal tolimitPrice. - It always refers to the quote currency.
- For buy stop-limit orders,
-
limitPricestring decimalThe limit price. It always refers to the quote currency.
- It's maximum precision is determined by the product's
quoteDisplayPrecisionfield, which can be fetched from the list products endpoint.
- It's maximum precision is determined by the product's
-
timeInForcestring enumTime in force policy for stop orders. Only GTC (Good Till Cancelled) is supported. If not specified, defaults to GTC.GTC
Responses
200
An order
Response Body
object
-
idstring uuid requiredUnique identifier for the order. Used to reference the order in other endpoints. -
accountIdstring requiredThe ID of the account -
enterpriseIdstring required -
initiatedByUserIdstring required -
canceledByUserIdstring required -
clientOrderIdstring requiredCustom 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. -
timestring date-time required -
creationDatestring date-time required -
scheduledDatestring date-time requiredDate to schedule the order. If not provided, the order will be placed immediately. -
lastFillDatestring date-time required -
completionDatestring date-time required -
settleDatestring date-time required -
fundingTypestring enum requiredThe 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.
marginfunded -
typestring enum requiredThe type of order to be placed. See our Trade Guide for more details on each order type.markettwaplimitsteady_pacestop -
timeInForcestring enum requiredTime 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
durationto be set.
GTCIOCFOKGTD -
statusstring enum requiredpending_openopencompletedpending_cancelcancelederrorscheduled -
reasonstring enum requiredReason 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 -
reasonDescriptionstring required -
productstring requiredProduct name e.g. BTC-USD (base-quote) -
sidestring enum requiredThe side of the orderbuysell -
quantitystring decimal requiredThe specified quantity. -
quantityCurrencystring requiredThe specified quantity currency. -
filledQuantitystring decimal requiredThe total base quantity filled. -
filledQuoteQuantitystring decimal requiredThe total quote quantity filled. -
leavesQuantitystring decimal requiredFor 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.
-
leavesQuoteQuantitystring decimal requiredFor 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.
-
averagePricestring decimal requiredThe average price for the order's trades. -
limitPricestring decimal requiredThe limit price. It always refers to the quote currency.
- It's maximum precision is determined by the product's
quoteDisplayPrecisionfield, which can be fetched from the list products endpoint.
- It's maximum precision is determined by the product's
-
triggerPricestring decimalThe trigger price for stop orders. When the market reaches this price, the stop order is activated.
- For buy stop-limit orders,
triggerPricemust be less than or equal tolimitPrice. - For sell stop-limit orders,
triggerPricemust be greater than or equal tolimitPrice. - It always refers to the quote currency.
- For buy stop-limit orders,
-
durationinteger requiredDuration of the order in minutes. -
twapIntervalinteger requiredInterval length of the TWAP order in minutes. -
rtIdstring requiredThe request tracking ID associated with the order. -
parametersobjectparameters object
-
isTimeSlicedbooleanThe 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.
-
boundsControlstring enumThe 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 -
intervalinteger requiredThe interval for the SteadyPace order, specified in conjunction with the interval unit. -
intervalUnitstring enum requiredThe unit of time for the interval. Defaults to "minute".secondminutehour -
subOrderSizestring decimal requiredThe size of each sub-order in the SteadyPace order. -
variancestring decimalOptional 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.
-
-
notesstring requiredAdditional notes associated with the order.
400
Bad request - Invalid order parameters
Response Body
ONE OF
-
errorstring required -
errorNamestring required -
reqIdstring required -
contextobjectOptional structured metadata for REST validation failures. The schema is fixed for client contract stability.context object
-
errorNamestring requiredSame value as the top-level errorName. -
fieldstringRequest field associated with the validation failure. -
messagestringHuman-readable field-level validation message.
-
-
errorobject requirederror object
-
currencySymbolstringThe currency symbol for the validation error -
messagestringHuman-readable error message -
minQuantitystringMinimum quantity required -
maxQuantitystringMaximum quantity allowed -
fieldstringRequest field name that caused the error
-
-
errorNamestring required
401
Unauthorized - Invalid or missing authentication
Response Body
object
-
errorstring required -
errorNamestring required -
reqIdstring required -
contextobjectOptional structured metadata for REST validation failures. The schema is fixed for client contract stability.context object
-
errorNamestring requiredSame value as the top-level errorName. -
fieldstringRequest field associated with the validation failure. -
messagestringHuman-readable field-level validation message.
-
403
Forbidden - Insufficient permissions
Response Body
object
-
errorstring required -
errorNamestring required -
reqIdstring required -
contextobjectOptional structured metadata for REST validation failures. The schema is fixed for client contract stability.context object
-
errorNamestring requiredSame value as the top-level errorName. -
fieldstringRequest field associated with the validation failure. -
messagestringHuman-readable field-level validation message.
-
409
Conflict - An identifier or resource is already in use
Response Body
object
-
errorstring required -
errorNamestring required -
reqIdstring required
422
Unprocessable Entity - JSON payload is improperly formatted
Response Body
object
-
errorstring required -
errorNamestring required -
reqIdstring required -
contextobjectOptional structured metadata for REST validation failures. The schema is fixed for client contract stability.context object
-
errorNamestring requiredSame value as the top-level errorName. -
fieldstringRequest field associated with the validation failure. -
messagestringHuman-readable field-level validation message.
-
429
Too Many Requests - Rate limit exceeded
Response Body
object
-
errorstring required -
errorNamestring required -
reqIdstring required -
contextobjectOptional structured metadata for REST validation failures. The schema is fixed for client contract stability.context object
-
errorNamestring requiredSame value as the top-level errorName. -
fieldstringRequest field associated with the validation failure. -
messagestringHuman-readable field-level validation message.
-
500
Internal Server Error
Response Body
object
-
errorstring required -
errorNamestring required -
reqIdstring required -
contextobjectOptional structured metadata for REST validation failures. The schema is fixed for client contract stability.context object
-
errorNamestring requiredSame value as the top-level errorName. -
fieldstringRequest field associated with the validation failure. -
messagestringHuman-readable field-level validation message.
-