---
title: "Place TP/SL order"
method: POST
path: "/v1/orders/tpsl"
tags: ["Orders"]
---

# Place TP/SL order

`POST /v1/orders/tpsl`

Create a Take Profit or Stop Loss order. Orders are stored off-chain and executed on-chain when the stop price condition is met.

**Order Types:**
- `TAKE_PROFIT`: Triggers when price moves favorably (long: price >= stop_price, short: price <= stop_price)
- `STOP_LOSS`: Triggers when price moves unfavorably (long: price <= stop_price, short: price >= stop_price)

**Stop Price Options:**
- `MARK_PRICE`: Use oracle mark price for trigger
- `LAST_TRADED_PRICE`: Use last traded price for trigger

**Signature (required):**
Sign EIP-712 typed data (same domain as regular orders) with primaryType `PlaceTpslOrder`:
fields: account(address), marketId(uint64), side(uint8), size(string), stopType(uint8), stopPrice(string), limitPrice(string), orderType(uint8), stopPriceOption(uint8), tif(uint8), deadline(uint32), sizePercentBps(uint32).
Use exact same string values in signature and request body.

## Request body

- ApiPlaceTpslOrderRequest
  - `account` string — Account address in hex format (0x...)
  - `market_id` string, uint64 — Market ID for the TPSL order
  - `side` 'BUY' | 'SELL'
  - `size` string — Order size in base asset (decimal string, e.g. "1.5" for 1.5 units)
  - `stop_type` 'TAKE_PROFIT' | 'STOP_LOSS' | 'STOP_TYPE_NONE'
  - `order_type` 'MARKET' | 'LIMIT'
  - `stop_price` string — Stop price that triggers the order (decimal string, e.g. "70000" for $70k)
  - `limit_price` string — Limit price for execution (decimal string), required for LIMIT orders
  - `stop_price_option` 'LAST_TRADED_PRICE' | 'MARK_PRICE' | 'PRICE_OPTION_NONE'
  - `tif` 'GTC' | 'GTT' | 'FOK' | 'IOC'
  - `signer` string — Signer address (session key) that signed this request
  - `signature` string, byte — 65-byte ECDSA signature (r+s+v) from signer over EIP-712 PlaceTpslOrder typed data
  - `deadline` integer — Unix timestamp after which the signature expires
  - `size_percent_bps` integer — Proportional size in basis points of the position (0..10000; 10000 = full position). 0 (default) = fixed size

## Response `200`

A successful response.

- ApiPlaceTpslOrderResponse
  - `order_id` string — Unique order ID (UUID format)
  - `status` 'TPSL_ORDER_STATUS_ACCEPTED' | 'TPSL_ORDER_STATUS_TRIGGERED' | 'TPSL_ORDER_STATUS_SUCCESS' | 'TPSL_ORDER_STATUS_CANCELLED' — - TPSL_ORDER_STATUS_ACCEPTED: Order accepted, waiting for trigger - TPSL_ORDER_STATUS_TRIGGERED: Trigger condition met, executing - TPSL_ORDER_STATUS_SUCCESS: Order executed successfully - TPSL_ORDER_STATUS_CANCELLED: Order cancelled by user or system
  - `order` ApiTpslOrder
    - `order_id` string
    - `account` string
    - `market_id` string, uint64
    - `side` 'BUY' | 'SELL'
    - `size` string
    - `stop_type` 'TAKE_PROFIT' | 'STOP_LOSS' | 'STOP_TYPE_NONE'
    - `order_type` 'MARKET' | 'LIMIT'
    - `stop_price` string
    - `limit_price` string
    - `stop_price_option` 'LAST_TRADED_PRICE' | 'MARK_PRICE' | 'PRICE_OPTION_NONE'
    - `status` 'TPSL_ORDER_STATUS_ACCEPTED' | 'TPSL_ORDER_STATUS_TRIGGERED' | 'TPSL_ORDER_STATUS_SUCCESS' | 'TPSL_ORDER_STATUS_CANCELLED' — - TPSL_ORDER_STATUS_ACCEPTED: Order accepted, waiting for trigger - TPSL_ORDER_STATUS_TRIGGERED: Trigger condition met, executing - TPSL_ORDER_STATUS_SUCCESS: Order executed successfully - TPSL_ORDER_STATUS_CANCELLED: Order cancelled by user or system
    - `tif` 'GTC' | 'GTT' | 'FOK' | 'IOC'
    - `created_at` string, int64
    - `expires_at` string, int64
    - `triggered_at` string, int64
    - `triggered_price` string
    - `trigger_tx_hash` string
    - `triggered_tx_hash` string
    - `triggered_order_id` string
    - `cancel_reason` string
    - `size_percent_bps` integer
    - `filled_size` string

## Other responses

- `default` — An unexpected error response.

---

[API](https://skmtc.net/rise/apis/risex-rest-api.md) · [All operations](https://skmtc.net/rise/apis/risex-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rise/risex-rest-api/revisions/194af8339c0d/schema)
