Skip to main content

Authentication requirements

All routes under /oapi/accounts/:accountId/orders/derivative require Authorization: Bearer <access_token>. Use the access_token and otp_token returned by POST /oapi/auth/gen-secret-key/derivative. GET requests require the Bearer token only. POST, PUT, and DELETE requests also require these headers:
  • x-otp-token: <otp_token>
In sandbox, use the exact fixture OTP token: 2c897da51e69cd6f3a0701884ed706ac.

Place order

POST /oapi/accounts/:accountId/orders/derivative Places a new derivative order for an account.

Required path parameters

  • accountId — Trading account ID.

Required body parameters

  • instrument — Instrument code. Example: 41BAG4000
  • qty — Order quantity. Example: 1
  • side — Order side. Example: buy
  • type — Order type. Example: LO
  • limitPrice — Limit price. Example: 1802
  • timetype — Time-in-force type. Example: T

Response fields

  • s (string) — Request status. Example: ok
  • d.orderid (string) — Created order ID.

cURL

curl -X POST "$BASE_URL/oapi/accounts/$ACCOUNT_ID/orders/derivative" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-lang: vi" \
  -H "x-via: K" \
  -H "x-otp-token: $OTP_TOKEN" \
  -d '{
    "instrument": "41BAG4000",
    "qty": 1,
    "side": "buy",
    "type": "LO",
    "limitPrice": 1802,
    "timetype": "T"
  }'

Example response

{
    "s": "ok",
    "d": {
        "orderid": "8000180326000220"
    }
}

Update order

PUT /oapi/accounts/:accountId/orders/derivative/:orderId Updates quantity and limit price for an existing derivative order.

Required path parameters

  • accountId — Trading account ID.
  • orderId — Order ID to update.

Required body parameters

  • qty — Updated order quantity. Example: 1
  • limitPrice — Updated limit price. Example: 1802

cURL

curl -X PUT "$BASE_URL/oapi/accounts/$ACCOUNT_ID/orders/derivative/$ORDER_ID" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-lang: vi" \
  -H "x-via: K" \
  -H "x-otp-token: $OTP_TOKEN" \
  -d '{
    "qty": 1,
    "limitPrice": 1802
  }'

Example response

{
    "s": "ok"
}

Cancel order

DELETE /oapi/accounts/:accountId/orders/derivative/:orderId?timeType=T&isbuyin=N&otp=e176078d1876e71a856f968b8864da22 Cancels an existing derivative order.

Required path parameters

  • accountId — Trading account ID.
  • orderId — Order ID to cancel.

Required query parameters

  • timeType — Time-in-force type. Example: T
  • isbuyin — Buy-in flag. Example: N
  • otp — OTP value passed in the query string. Example: e176078d1876e71a856f968b8864da22

Example body

  • qty — Quantity used in the provided request example. Example: 1
  • limitPrice — Limit price used in the provided request example. Example: 1802

cURL

curl -X DELETE "$BASE_URL/oapi/accounts/$ACCOUNT_ID/orders/derivative/$ORDER_ID?timeType=T&isbuyin=N&otp=e176078d1876e71a856f968b8864da22" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-lang: vi" \
  -H "x-via: K" \
  -H "x-otp-token: $OTP_TOKEN" \
  -d '{
    "qty": 1,
    "limitPrice": 1802
  }'

Example response

{
    "s": "ok"
}