> For AI agents: the documentation index is available at [llms.txt](https://docs.snaptrade.com/llms.txt), and the comprehensive documentation index is available at [llms-full.txt](https://docs.snaptrade.com/llms-full.txt). Download the [complete public OpenAPI specification](https://docs.snaptrade.com/openapi.yaml). Complete public OpenAPI specification with all documented operations, schemas, servers, and authentication requirements. Use it for SDK generation and API tooling; beta operations are marked x-beta. Markdown versions of documentation pages are available by appending .md to the URL path.

# Cancel order

POST https://api.snaptrade.com/accounts/{accountId}/trading/cancel

Cancels an order in the specified account. Accepts order IDs for all asset types.


Reference: https://docs.snaptrade.com/reference/Trading/Trading_cancelOrder

## Code Examples

### TypeScript

```typescript

import {
  Snaptrade,
  SnaptradeAuth,
} from "snaptrade-typescript-sdk";

const snaptrade = new Snaptrade({
  auth: SnaptradeAuth.commercialApiKey({
    consumerKey: "CONSUMER_KEY",
    clientId: "CLIENT_ID",
  }),
});

const response =
  await snaptrade.trading.cancelOrder({
    accountId:
      "917c8734-8470-4a3e-a18f-57c3f2ee6631",
    userId: "USER_ID",
    userSecret: "USER_SECRET",
    brokerage_order_id:
      "66a033fa-da74-4fcf-b527-feefdec9257e",
  });
console.log(response.data);

```

### Python

```python

from pprint import pprint
from snaptrade_client import SnapTrade, SnapTradeAuth

snaptrade = SnapTrade(
    auth=SnapTradeAuth.commercial_api_key(
        consumer_key="CONSUMER_KEY",
        client_id="CLIENT_ID",
    )
)

response = snaptrade.trading.cancel_order(
    account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    brokerage_order_id="66a033fa-da74-4fcf-b527-feefdec9257e",
    user_id="USER_ID",
    user_secret="USER_SECRET"
)
pprint(response.body)

```

## OpenAPI Specification

```yaml

openapi: 3.0.0
info:
  description: >
    Connect brokerage accounts to your app for live positions and trading.


    ## Rate limiting


    Two limits apply to requests signed with your `clientId`. The stricter one

    wins, and exceeding either returns `429 Too Many Requests`.


    - **Customer-level** — 250 requests/minute by default, scoped to your
      `clientId` and applied across all endpoints. Reported in
      `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`.
    - **Account-level** — 10 requests/minute per account, scoped to
      (`clientId`, `accountId`). All covered operations for one account draw on
      the same bucket — reading balances and reading positions share it — and
      enforcement does not depend on the HTTP method, so updating an account
      consumes the same bucket as reading it. Only enforced for Personal users,
      and only for integrations it has been rolled out to — it is not yet in
      force for every Personal integration. It also does not apply on every
      operation that documents a 429 below. Where it applies it is reported in
      `X-RateLimit-Account-Limit`, `X-RateLimit-Account-Remaining` and
      `X-RateLimit-Account-Reset`. Do not read the absence of those headers as
      proof the limit is off — some configurations omit the rate limit headers
      while still enforcing the limit, so header absence tells you nothing
      about your allowance.

    On a 429, `X-RateLimit-Remaining: 0` means you hit the customer-level limit

    and `X-RateLimit-Account-Remaining: 0` means the account-level one. Wait for

    the corresponding `*-Reset` value (seconds) before retrying, or fall back to

    exponential backoff with jitter.


    Not every 429 is explained by those headers. A separate

    per-authenticated-user limit, reported in no `X-RateLimit-*` header, covers

    OAuth-authenticated requests and signed requests in configurations where the

    customer-level limit is not in effect — on the operations that use the

    default throttles. A few operations override those and are governed by the

    customer-level limit alone. The two do not stack: a signed request

    governed by the customer-level limit above is not additionally subject to
    the

    per-user one. If a 429 arrives with no header at zero — or with no

    `X-RateLimit-*` headers at all — honour `Retry-After` and back off. Treat
    the

    remaining counts as a hint, not a guarantee that the next request will

    succeed.


    Because the customer-level limit applies everywhere, any signed request can

    return 429.


    **OAuth-authenticated requests are an exception.** They are not subject to

    the customer-level limit and do not receive `X-RateLimit-Limit`,

    `X-RateLimit-Remaining` or `X-RateLimit-Reset` — do not wait on those
    headers

    or design around a customer-level allowance on this path. The account-level

    limit still applies to them on the account-data endpoints above, reported in

    the `X-RateLimit-Account-*` headers. On operations using the default

    throttles the per-user limit above applies to them as well, so an OAuth

    request can be rejected while the account headers still show capacity; on

    the few operations that override those throttles, OAuth callers have no

    per-user ceiling at all. Drive retries from `Retry-After` and exponential

    backoff with jitter rather than from the headers.


    See https://docs.snaptrade.com/docs/ratelimiting.
  version: 1.0.0
  title: SnapTrade
  termsOfService: N/A
  contact:
    email: api@snaptrade.com
  x-konfig-ignore:
    potential-incorrect-type: true
  x-readme:
    explorer-enabled: false
paths:
  /accounts/{accountId}/trading/cancel:
    post:
      tags:
        - Trading
      summary: Cancel order
      description: >
        Cancels an order in the specified account. Accepts order IDs for all
        asset types.
      operationId: Trading_cancelOrder
      parameters:
        - in: path
          required: true
          name: accountId
          schema:
            description: >-
              Unique identifier for the connected brokerage account. This is the
              UUID used to reference the account in SnapTrade.
            type: string
            format: uuid
            example: 917c8734-8470-4a3e-a18f-57c3f2ee6631
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - brokerage_order_id
              properties:
                brokerage_order_id:
                  description: >-
                    Order ID returned by brokerage. This is the unique
                    identifier for the order in the brokerage system.
                  type: string
                  example: 66a033fa-da74-4fcf-b527-feefdec9257e
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                  - brokerage_order_id
                properties:
                  brokerage_order_id:
                    description: >-
                      Order ID returned by brokerage. This is the unique
                      identifier for the order in the brokerage system.
                    type: string
                    example: 66a033fa-da74-4fcf-b527-feefdec9257e
                  raw_response:
                    type: object
                    nullable: true
                    description: The raw response from the brokerage.
                    example:
                      order_id: '1234567890'
                      status: CANCELLED
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                description: Example for failed request response
                type: object
                properties:
                  default_detail:
                    example: Unable to verify data sent
                  default_code:
                    example: 1076
        '500':
          description: Unexpected Error
      security:
        - PartnerSignature: []
          PartnerClientId: []
          PartnerTimestamp: []
          userId: []
          userSecret: []
        - PersonalSignature: []
          PersonalClientId: []
          PersonalTimestamp: []

```