> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xo.market/llms.txt
> Use this file to discover all available pages before exploring further.

# Cancel single order

> Cancel a single order via signed `CancelOrder(orderId, marketId)` or via HMAC + `orderID`.



## OpenAPI

````yaml /api-reference/openapi.yaml delete /order
openapi: 3.0.3
info:
  title: XO Orderbook API
  description: |
    Public REST surface of the XO CLOB API.

    XO mainnet chain id is `3223`. The EIP-712 order domain is
    `XO Market CLOB` with `verifyingContract` set to the
    [CTF Exchange](/) address. See
    [Smart accounts](../guides/smart-accounts) for the smart-account
    identity model and ERC-1271 order signing.

    Wire conventions:
      * Prices are trimmed decimal strings (e.g. `"0.5"`, `"0.555"`).
      * Sizes are decimal-string integers in human shares.
      * Timestamps in trade and book responses are stringified Unix
        seconds / milliseconds (the SDK uses `TimestampSeconds<String>`
        / `TimestampMilliSeconds<String>`).
      * Token IDs are decimal U256 strings; condition IDs are
        `0x`-prefixed 32-byte hex.
  version: 1.0.0
  contact:
    name: XO Market
    url: https://beta.xo.market
servers:
  - url: https://orderbooks.xo.market
    description: Mainnet (XO chain id 3223)
security: []
tags:
  - name: Authentication
    description: >-
      Create and manage API keys. The L1 ClobAuth EIP-712 flow mints HMAC
      credentials that authenticate every other private request.
  - name: Market Data
    description: >-
      Public reads for books, prices, midpoints, spreads, last trades, and price
      history. Also includes server time and per-token configuration.
  - name: Markets
    description: >-
      Discovery for tradable markets, including pagination and SDK-compatible
      simplified shapes.
  - name: Trade
    description: Place, cancel, and inspect orders and trades for the authenticated maker.
  - name: Account
    description: Maker balance, allowance, positions, and claimable settled positions.
paths:
  /order:
    delete:
      tags:
        - Trade
      summary: Cancel single order
      description: >-
        Cancel a single order via signed `CancelOrder(orderId, marketId)` or via
        HMAC + `orderID`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelOrderRequest'
            examples:
              hmac_clob_form:
                summary: CLOB SDK form (HMAC auth, just `orderID`)
                value:
                  orderID: '42'
              eip712_legacy_form:
                summary: legacy form (EIP-712 cancel signature)
                value:
                  orderId: 42
                  marketId: >-
                    0x39a12d52b63969654926e095ddd96f5c459112714da03edca769aa58173c78fb
                  signature: >-
                    0xb2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a11c
                  signatureType: 3
                  signer: '0xCAFE000000000000000000000000000000000A11'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelResponse'
              examples:
                canceled_ok:
                  summary: order successfully cancelled
                  value:
                    canceled:
                      - '42'
                    notCanceled: {}
                already_filled:
                  summary: order was already filled before the cancel arrived
                  value:
                    canceled: []
                    notCanceled:
                      '42': already filled
        '401':
          $ref: '#/components/responses/Error401'
        '404':
          $ref: '#/components/responses/Error404'
      x-codeSamples:
        - lang: Rust
          label: xo-orderbook-client-rs
          source: >
            // Requires an authenticated client (see POST /order for setup).

            let resp = client
                .cancel_order("0x0011223344556677889900aabbccddeeff00112233445566778899aabbccddee")
                .await?;
            println!("canceled: {:?}, not canceled: {:?}", resp.canceled,
            resp.not_canceled);
components:
  schemas:
    CancelOrderRequest:
      type: object
      required:
        - orderId
        - marketId
        - signature
        - signatureType
      properties:
        orderId:
          type: integer
          format: int64
        marketId:
          type: string
        signature:
          type: string
          description: EIP-712 sig over CancelOrder(orderId, marketId)
        signatureType:
          type: integer
          enum:
            - 0
            - 3
          description: 0 = EOA, 3 = EIP-1271 smart wallet
        signer:
          type: string
          description: Required when signatureType = 3
    CancelResponse:
      type: object
      description: |
        Wire shape uses **camelCase** (`canceled` / `notCanceled`) per the
        CLOB SDK contract. American spelling — one `l` (NOT `cancelled`).
        Shared by `DELETE /order`, `DELETE /orders`, `DELETE /cancel-all`,
        `DELETE /cancel-market-orders`.
      required:
        - canceled
        - notCanceled
      properties:
        canceled:
          type: array
          items:
            type: string
          description: Order ids that were successfully cancelled, decimal strings.
        notCanceled:
          type: object
          additionalProperties:
            type: string
          description: |
            Map of `<order_id> → <reason>` for orders that could not be
            cancelled. Common reasons: `"already filled"`,
            `"not found"`, `"not owner"`.
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
  responses:
    Error401:
      description: |
        Authentication failure. L1 ClobAuth (wallet) or L2 HMAC (API key)
        headers were missing, malformed, expired, or did not match the
        requested resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            l1_required:
              summary: L1 ClobAuth headers missing
              value:
                error: L1 ClobAuth headers required
            l2_required:
              summary: HMAC credentials missing
              value:
                error: HMAC L2 credentials required
            address_mismatch:
              summary: L1-recovered address does not match request
              value:
                error: L1 auth address does not match request address
    Error404:
      description: |
        Resource not found. The message embeds the requested identifier
        verbatim (`market not found: 0x…`, `trade not found: 0x…`,
        `no API key found for address 0x…`). Read endpoints that fail
        token lookup return the canonical CLOB string
        `"No orderbook exists for the requested token id"`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            market_not_found:
              summary: unknown condition_id
              value:
                error: >-
                  market not found:
                  0x0000000000000000000000000000000000000000000000000000000000000000
            no_orderbook:
              summary: unknown token_id on a read endpoint
              value:
                error: No orderbook exists for the requested token id
            trade_not_found:
              summary: unknown trade id
              value:
                error: >-
                  trade not found:
                  0x0000000000000000000000000000000000000000000000000000000000000000
            api_key_not_found:
              summary: derive-api-key called for an address with no key
              value:
                error: >-
                  no API key found for address
                  0xCAFE000000000000000000000000000000000A11

````