---
title: "Query unexecuted(active) OCO orders"
method: POST
path: "/api/v4/oco-orders"
tags: ["Collateral Trading"]
---

# Query unexecuted(active) OCO orders

`POST /api/v4/oco-orders`

The endpoint returns active (unexecuted) [OCO](/glossary#one-cancels-the-other-oco) orders for the authenticated account. Each OCO order contains a `stop_loss` and `take_profit` leg. When one leg executes, the system cancels the other automatically. Use the optional `market` parameter to filter results.

<Warning>
Rate limit: 12000 requests/10 sec.
</Warning>

<Note>
This endpoint supports pagination. Use `limit` (default: 50) and `offset` (default: 0) to page through results. The response does not include a `total` field — detect the last page when fewer than `limit` OCO orders are returned. An empty array means you have paged past the end; receiving exactly `limit` orders does not guarantee that another page exists.
</Note>

<Accordion title="Error Codes">
  - `30` - default validation error code (invalid pagination — `limit` outside 1–100 or negative `offset`)
  - `31` - market validation failed (the `market` filter is unknown or not available for collateral trading)
</Accordion>

## Request body

- object
  - `market` string — Filter by specific market. Example: BTC_USDT If not specified, returns OCO orders for all markets.
  - `offset` integer — Number of records to skip for pagination.
  - `limit` integer — Maximum number of records to return per page.
  - `request` string
  - `nonce` integer

## Response `200`

Successful response - returns array of active OCO orders

- object[] — Array of active OCO orders
  - `id` integer — OCO order identifier
  - `stop_loss` object — Stop loss order details
    - `orderId` integer
    - `clientOrderId` string
    - `market` string
    - `side` 'buy' | 'sell'
    - `type` string
    - `timestamp` number
    - `dealMoney` string
    - `dealStock` string
    - `amount` string
    - `takerFee` string
    - `makerFee` string
    - `left` string
    - `dealFee` string
    - `post_only` boolean
    - `mtime` number
    - `price` string
    - `activation_price` string
    - `activation_condition` 'gte' | 'lte' — Trigger condition derived from `side` (response-only, cannot be overridden): `buy` → `gte`, `sell` → `lte`.
    - `activated` integer
    - `status` string
    - `stp` string
  - `take_profit` object — Take profit order details
    - `orderId` integer
    - `clientOrderId` string
    - `market` string
    - `side` 'buy' | 'sell'
    - `type` string
    - `timestamp` number
    - `dealMoney` string
    - `dealStock` string
    - `amount` string
    - `takerFee` string
    - `makerFee` string
    - `left` string
    - `dealFee` string
    - `post_only` boolean
    - `mtime` number
    - `price` string
    - `status` string
    - `stp` string

## Other responses

- `400` — Inner validation failed
- `422` — Request validation failed
- `503` — Service temporarily unavailable

---

[API](https://skmtc.net/whitebit/apis/whitebit-private-http-api-v4.md) · [All operations](https://skmtc.net/whitebit/apis/whitebit-private-http-api-v4/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whitebit/whitebit-private-http-api-v4/revisions/76c9def9942f/schema)
