# Cancel everything resting, or one contract's orders

`POST https://app.skylit.ai/api/nexus/v1/trading/accounts/{account}/orders/cancel`

API: Nexus.

`"cancelAll": true` cancels every resting order on the account. `ticker` cancels only that contract's. Not both. Nothing resting answers `200` with `meta.nothingToCancel: true`.

If one cancel fails part way, the error says how many were cancelled and which order is still working. Read the working list and send the cancel again. With `"test": true` it cancels the account's test orders in your test log and never touches a real order.

## Authentication

Send your Skylit API key as a bearer token: `Authorization: Bearer <key>`. No other header is accepted.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `account` | path | string | yes | `practice`, `evaluation` or `funded` (when you have exactly one running), or a futures account id from capabilities. |

## Request body

`application/json`

```json
{
  "cancelAll": false,
  "ticker": "string",
  "test": false
}
```

## Example request

```bash
curl "https://app.skylit.ai/api/nexus/v1/trading/accounts/practice/orders/cancel" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

What was cancelled. `meta.count` is how many.

One limit order cancelled.:

```json
{
  "data": {
    "account": {
      "id": "8d7c6b5a-4e3f-4a2b-9c1d-0e1f2a3b4c5d",
      "kind": "evaluation",
      "name": "50K Evaluation"
    },
    "cancelled": [
      {
        "id": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",
        "assetClass": "futures",
        "source": "api",
        "account": {
          "id": "8d7c6b5a-4e3f-4a2b-9c1d-0e1f2a3b4c5d",
          "kind": "evaluation",
          "name": "50K Evaluation"
        },
        "symbol": "NQZ26",
        "side": "buy",
        "quantity": 1,
        "role": "entry",
        "orderType": "limit",
        "status": "cancelled",
        "limitPrice": 25300,
        "placedAt": "2026-10-09T14:36:00Z"
      }
    ]
  },
  "meta": {
    "count": 1
  }
}
```

Only the NQ orders: an entry and its held stop go together, so one cancel took both.:

```json
{
  "data": {
    "account": {
      "id": "8d7c6b5a-4e3f-4a2b-9c1d-0e1f2a3b4c5d",
      "kind": "evaluation",
      "name": "50K Evaluation"
    },
    "cancelled": [
      {
        "id": "7e25d6e7-f809-4102-9324-354657687980",
        "assetClass": "futures",
        "source": "api",
        "account": {
          "id": "8d7c6b5a-4e3f-4a2b-9c1d-0e1f2a3b4c5d",
          "kind": "evaluation",
          "name": "50K Evaluation"
        },
        "symbol": "NQZ26",
        "side": "sell",
        "quantity": 1,
        "role": "entry",
        "orderType": "stop",
        "status": "cancelled",
        "stopPrice": 25250,
        "placedAt": "2026-10-09T15:01:12Z",
        "bracket": [
          {
            "id": "8f36e7f8-0910-4213-8435-465768798091",
            "assetClass": "futures",
            "source": "api",
            "account": {
              "id": "8d7c6b5a-4e3f-4a2b-9c1d-0e1f2a3b4c5d",
              "kind": "evaluation",
              "name": "50K Evaluation"
            },
            "symbol": "NQZ26",
            "side": "buy",
            "quantity": 1,
            "role": "stop_loss",
            "orderType": "stop",
            "status": "cancelled",
            "stopPrice": 25270,
            "placedAt": "2026-10-09T15:01:12Z",
            "parentId": "7e25d6e7-f809-4102-9324-354657687980"
          }
        ]
      }
    ]
  },
  "meta": {
    "count": 1
  }
}
```

### 400

The request was refused before anything was traded. Codes: `bad_request`, `bad_contract`, `invalid_quantity`, `invalid_price`, `unsupported_asset_class`, `unsupported_order_type`, `only_market_orders`, `test_orders_unavailable`, `test_modify_unavailable`.

A typo in the body.:

```json
{
  "error": {
    "code": "bad_request",
    "message": "Unknown field \"quantitty\". See the trades API docs for the fields you can send."
  }
}
```

### 401

No key, or a key that isn't valid. Codes: `missing_api_key`, `invalid_api_key`.

No key sent.:

```json
{
  "error": {
    "code": "missing_api_key",
    "message": "Send your Skylit API key in the Authorization header: Authorization: Bearer YOUR_SKYLIT_API_KEY."
  }
}
```

### 403

The key works but the account can't do this. Codes: `account_suspended`, `nexus_access_denied`, `futures_access_denied`.

The account doesn't include Nexus.:

```json
{
  "error": {
    "code": "nexus_access_denied",
    "message": "This Skylit account doesn't include Nexus, so it can't place Nexus trades."
  }
}
```

### 404

Not on your account. Codes: `trade_not_found`, `account_not_found`, `order_not_found`.

Not your trade, or no such trade.:

```json
{
  "error": {
    "code": "trade_not_found",
    "message": "No trade with that id on your account."
  }
}
```

### 409

The order clashes with what you hold or sent before. Codes: `duplicate_position` (with `tradeId`), `trade_closed`, `open_position_limit`, `client_order_id_used`, `request_in_progress`, `account_locked`, `account_busy`, `account_ended`, `order_not_working`.

You already hold this contract.:

```json
{
  "error": {
    "code": "duplicate_position",
    "message": "You already hold an open position on this contract. Close it first, or add to it in Nexus.",
    "tradeId": "6f1c2a4e-8b1d-4c39-9a51-2d7e0b3c9f10"
  }
}
```

### 422

Read fine, but the market or the account says no. Codes: `market_closed`, `contract_expired`, `contract_not_offered`, `price_outside_market`, `insufficient_buying_power`, `account_not_tradable`, `account_ambiguous`, `reduce_only_would_open`, `order_refused`.

Outside market hours.:

```json
{
  "error": {
    "code": "market_closed",
    "message": "The market is closed for this contract right now, so nothing was filled."
  }
}
```

### 429

Over a rate limit. Wait `Retry-After` seconds, then retry. Code: `rate_limited`.

Headers: `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`.

Too many writes from this key.:

```json
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests (limit 30). Slow down and retry in 12 seconds."
  }
}
```

### 503

Try again in a moment (honour `Retry-After` when it's sent). Codes: `stale_quote`, `no_live_price`, `rules_pending`, `unavailable`, `auth_unavailable`, `access_check_unavailable`, `api_keys_unavailable`, `trades_api_disabled`.

Headers: `Retry-After`.

No live price right now.:

```json
{
  "error": {
    "code": "no_live_price",
    "message": "There's no live price for this contract right now, so nothing was filled. Try again in a moment."
  }
}
```
