---
title: "Batch Cancel Orders (V2)"
method: DELETE
path: "/portfolio/events/orders/batched"
tags: ["orders"]
---

# Batch Cancel Orders (V2)

`DELETE /portfolio/events/orders/batched`

## Request

- Base URL: `https://external-api.kalshi.com/trade-api/v2`
- URL: `https://external-api.kalshi.com/trade-api/v2/portfolio/events/orders/batched`
- Auth: API key in header `KALSHI-ACCESS-KEY` and API key in header `KALSHI-ACCESS-SIGNATURE` and API key in header `KALSHI-ACCESS-TIMESTAMP`

Endpoint for cancelling a batch of event-market orders using the V2 response shape. To auto-route a cancellation, provide its `market_ticker` and omit `exchange_index` or set it to `-1`. The maximum batch size scales with your tier's write budget — see [Rate Limits and Tiers](/getting_started/rate_limits).

## Request body

- BatchCancelOrdersV2Request
  - `orders` object[], required: An array of orders to cancel, each optionally specifying a subaccount.
    - `order_id` string, required: Order ID to cancel.
    - `subaccount` integer: Optional subaccount number to use for this cancellation (0 for primary, 1-63 for subaccounts). Subaccount-restricted API keys must omit this field or pass their locked subaccount.
    - `exchange_index` integer: Identifier for an exchange shard.
    - `market_ticker` string: Market ticker. Required for auto-routing when exchange_index is omitted or -1.

## Response `200`

Batch order cancellation completed

- BatchCancelOrdersV2Response
  - `orders` object[], required
    - `order_id` string, required: The order ID identifying which order this entry corresponds to.
    - `client_order_id` string, nullable
    - `reduced_by` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
    - `ts_ms` integer, nullable: Matching engine timestamp at which the cancellation was processed, as Unix epoch milliseconds. Absent when the cancel errored.
    - `error` ErrorResponse
      - `code` string: Error code
      - `message` string: Human-readable error message
      - `details` string: Additional details about the error, if available

## Other responses

- `400`: Bad request - invalid input
- `401`: Unauthorized - authentication required
- `403`: Forbidden - insufficient permissions
- `500`: Internal server error

## Changes

- **2026-08-20** `f2e3ba6d8ce6`: 1 info
  - the `exchange_index` request property default value `0` was removed
- **2026-07-31** `a07481be8bf9`: 5 warning, 1 info
  - removed the optional property `orders/items/error/allOf[#/components/schemas/ErrorResponse]/service` from the response with the `200` status
  - removed the optional property `service` from the response with the `400` status
  - removed the optional property `service` from the response with the `401` status
  - removed the optional property `service` from the response with the `403` status
  - …2 more
- **2026-07-13** `a671b3e77f35`: 1 info
  - added the new optional request property `orders/items/market_ticker`
- **2026-05-18** `7e31fc4590e0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/changes/portfolio/events/orders/batched/delete.md)

---

[API](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints.md) - [All operations](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/revisions/e6691cdd1915?raw)
