Place Order

Places an order to be triggered if a provided price criteria is met.

Rate limits

  • A max of 100 pending trigger orders per subaccount

Request

POST [TRIGGER_ENDPOINT]/execute

Body


{
  "place_order": {
    "product_id": 1,
    "order": {
      "sender": "0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43746573743000000000000000",
      "priceX18": "9900000000000000000000",
      "amount": "1000000000000000000",
      "expiration": "4294967295",
      "nonce": "1757062078359666688"
    },
    "trigger": {
      "price_below": "9900000000000000000000"
    }
    "signature": "0x",
    "id": 100
  }
}

Request Parameters

Parameter
Type
Required
Description

product_id

number

Yes

order

object

Yes

signature

string

Yes

trigger

object

Yes

Trigger criteria could be any of: {"price_above":"{PRICE}"}, {"price_below":"{PRICE}"}, {"last_price_above":"{PRICE}"},{"last_price_below":"{PRICE}"}

digest

string

No

Hex string representing a hash of the order.

spot_leverage

boolean

No

Indicates whether leverage should be used; when set to false , placing the order fails if the transaction causes a borrow on the subaccount. Defaults to true.

id

number

No

Note: - price_above: Order is triggered if the indicated price is above the oracle price. - price_below: Order is triggered if the indicated price is below the oracle price. - last_price_above: Order is triggered if the indicated price is above the last trade price. - last_price_below: Order is triggered if the indicated price is below the last trade price.

Order Nonce

Note: The first most significant bit must be set, this is used to identify a trigger order from a regular one. See order nonce for more details.

To compute a nonce for a trigger order with a random integer of 1000, and a discard time 50 ms from now, we can do the following:

import time
unix_epoch_ms = int(time.time()) * 1000
nonce = ((unix_epoch_ms + 50) << 20) + 1000 | (1 << 63)

Response

Success

{
  "status": "success",
  "signature": {signature},
  "data": { 
    "digest": {order digest} 
  },
  "request_type": "execute_place_order"
  "id": 100
}

Failure

{
  "status": "failure",
  "signature": {signature}
  "error": "{error_msg}"
  "error_code": {error_code},
  "request_type": "execute_place_order"
}

Last updated