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

# Modify order

> Modify the price or amount of an existing open spot order via the WhiteBIT V4 API.

* [Create limit order](/api-reference/spot-trading/create-limit-order) — place a new limit order
* [Cancel order](/api-reference/spot-trading/cancel-order) — cancel an open order
* [Query unexecuted orders](/api-reference/spot-trading/query-unexecuted-orders) — list open orders


## OpenAPI

````yaml /openapi/private/http-trade-v4.yaml POST /api/v4/order/modify
openapi: 3.0.3
info:
  title: Private HTTP API V4 - Collateral Trading
  description: |
    WhiteBIT Private HTTP API V4 for collateral/margin trading operations.

    Base URL: https://whitebit.com

    All endpoints return time in Unix-time format.
    All endpoints return either a JSON object or array.
    For receiving responses from API calls please use http method POST.

    Authentication required for all endpoints.
  version: 4.0.0
  license:
    name: WhiteBIT Terms of Service
    url: https://whitebit.com/terms
servers:
  - url: https://whitebit.com
    description: WhiteBIT Global Server
  - url: https://whitebit.eu
    description: WhiteBIT EU Server
security:
  - ApiKeyAuth: []
    PayloadAuth: []
    SignatureAuth: []
tags:
  - name: Collateral Trading
    description: Endpoints for collateral/margin trading operations
  - name: Spot Trading
    description: Endpoints for spot trading operations
  - name: Market Fee
    description: Endpoints for querying trading fees
paths:
  /api/v4/order/modify:
    post:
      tags:
        - Spot Trading
      summary: Modify order
      description: >
        The endpoint modifies existing [order](/glossary#orders).


        Supported order types: limit, stop limit, stop market.


        Request must contain one of the following parameters: amount, price,
        activationPrice.


        <Warning>

        Rate limit: 10000 requests/10 sec.

        </Warning>


        <Note>

        - Use total parameter instead of amount for modify buy stop market
        order.

        - Modification by clientOrderId takes priority.

        - The request supports working only with orderId or only with
        clientOrderId.

        - Do not pass both values at the same time.

        </Note>


        <Note>

        **WebSocket impact:** Each call to the endpoint cancels the original
        order and

        creates a replacement with a **new `orderId`**. Clients subscribed to
        the

        `ordersPending_update` WebSocket channel will receive:

        - `event_id=3` (cancel) for the old order

        - `event_id=1` (new) for the replacement


        Update any `orderId` references after a successful modify response.

        Use `clientOrderId` for stable order tracking across modifications.

        </Note>


        <Accordion title="Error Codes">

        **Status 400** (client errors): 1, 2, 6, 20, 24, 101, 158


        **Status 422** (business logic): 10, 11, 12, 13, 14, 15, 16, 17, 25, 27,
        40, 42, 51, 103, 104, 105, 106, 111, 112, 113, 114, 115, 150, 151, 152,
        153, 155, 157, 159, 160, 161, 162, 163, 250, 251, 300, 302, 330

        </Accordion>


        <Accordion title="Errors">

        ```json

        {
          "code": 31,
          "message": "Validation failed",
          "errors": {
            "market": ["Market is not available."]
          }
        }

        ```


        ```json

        {
          "code": 2,
          "message": "Inner validation failed",
          "errors": {
            "orderId": ["Unexecuted order was not found."]
          }
        }

        ```


        ```json

        {
          "code": 10,
          "message": "Validation failed",
          "errors": {
            "amount": ["Not enough balance."]
          }
        }

        ```

        </Accordion>
      operationId: modifyOrder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - market
                - request
                - nonce
              properties:
                orderId:
                  type: integer
                  description: Active order id. Required if clientOrderId is not set.
                  example: 4180284841
                clientOrderId:
                  type: string
                  description: >-
                    Identifier should be unique and contain letters, dashes,
                    numbers, dots or underscores. Required if orderId is not
                    set.
                  example: order1987111
                market:
                  type: string
                  description: 'Available [market](/glossary#market). Example: BTC_USDT'
                  example: BTC_USDT
                amount:
                  type: string
                  description: >-
                    Amount of [stock](/glossary#stock) currency to buy or sell.
                    Example: '0.001' or 0.001
                  example: '0.001'
                total:
                  type: string
                  description: >-
                    Total of [money](/glossary#money) currency to buy or sell.
                    Example: '0.001' or 0.001
                  example: '100'
                price:
                  type: string
                  description: >-
                    Price in [money](/glossary#money) currency. Example: '9800'
                    or 9800
                  example: '9800'
                activationPrice:
                  type: string
                  description: >-
                    Activation price in [money](/glossary#money) currency.
                    Example: '10000' or 10000
                  example: '10000'
                request:
                  type: string
                  example: '{{request}}'
                nonce:
                  type: integer
                  example: 1594297865000
      responses:
        '200':
          description: Order modified successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '400':
          description: >-
            Bad request - client errors (invalid arguments, order not found,
            quote expired, activation price issues)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: >-
            Unprocessable entity - business logic validation failed (balance
            insufficient, trading restrictions, order type conflicts, price
            bands exceeded)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service temporarily unavailable
      security:
        - ApiKeyAuth: []
          PayloadAuth: []
          SignatureAuth: []
components:
  schemas:
    OrderResponse:
      type: object
      properties:
        orderId:
          type: integer
          description: Unique identifier assigned to the order by the matching engine.
          example: 4180284841
        clientOrderId:
          type: string
          description: >-
            Custom client order identifier supplied in the request. Returns an
            empty string when not specified.
          example: order1987111
        market:
          type: string
          description: 'Trading pair for the order. Format: `BASE_QUOTE` (e.g., `BTC_USDT`).'
          example: BTC_USDT
        side:
          type: string
          description: 'Order side. Possible values: `buy`, `sell`.'
          example: buy
        type:
          type: string
          description: >-
            Order type. Possible values: `limit`, `market`, `stock market`,
            `stop limit`, `stop market`.
          example: limit
        timestamp:
          type: number
          description: >-
            Unix timestamp in seconds (UTC) of order creation, with microsecond
            precision.
          example: 1595792396.165973
        dealMoney:
          type: string
          description: >-
            Filled amount in quote currency. Returns `"0"` while the order
            remains unfilled.
          example: '0'
        dealStock:
          type: string
          description: >-
            Filled amount in base currency. Returns `"0"` while the order
            remains unfilled.
          example: '0'
        amount:
          type: string
          description: >-
            Order quantity in base currency for limit and stop-limit orders, or
            in quote currency for buy market orders.
          example: '0.01'
        left:
          type: string
          description: >-
            Remaining unfilled quantity. Equals `amount` for new orders and
            `"0"` for fully filled orders.
          example: '0.001'
        dealFee:
          type: string
          description: >-
            Cumulative trading fee charged for filled portions, denominated in
            the fee asset.
          example: '0'
        price:
          type: string
          description: >-
            Limit price per unit in quote currency. Returns `"0"` for market
            orders.
          example: '40000'
        postOnly:
          type: boolean
          description: >-
            Post-only flag. When `true`, the order executes only as a maker
            order and is rejected if it would match immediately. Default:
            `false`.
          example: false
        ioc:
          type: boolean
          description: >-
            Immediate-or-cancel flag. When `true`, the order executes available
            quantity immediately and cancels the unfilled remainder. Default:
            `false`.
          example: false
        status:
          $ref: '#/components/schemas/OrderStatus'
        stp:
          type: string
          description: >-
            Self-trade prevention mode. Possible values: `no`, `cancel_both`,
            `cancel_new`, `cancel_old`. Default: `no`.
          example: 'no'
        positionSide:
          type: string
          description: Position side (for collateral orders)
          example: LONG
        rpi:
          type: boolean
          description: Indicates Retail Price Improvement (RPI) mode for the order.
          example: true
        retail:
          type: boolean
          description: >-
            Retail-source taker flag. The field is present only when the order
            was placed with `retail=true`. See [Retail
            flag](/glossary#retail-flag).
          example: true
        reduceOnly:
          type: boolean
          description: >-
            Reduce-only flag. When `true`, the order can only reduce or close an
            existing position. See [reduce-only](/glossary#reduce-only).
          example: false
        activated:
          type: integer
          description: >-
            Activation status of the stop order. 0 = not yet triggered (waiting
            for the activation_price condition to be met). 1 = triggered (the
            stop condition has been met and the order is now active).
          example: 0
        activationCondition:
          type: string
          enum:
            - lte
            - gte
          description: >
            Trigger condition for the stop order. Response-only — not accepted
            in the request body, and cannot be overridden. Derived from `side`:


            - `side = buy` → `gte`. The order activates when the market price
            rises to or above `activation_price`.

            - `side = sell` → `lte`. The order activates when the market price
            falls to or below `activation_price`.
          example: lte
        activation_price:
          type: string
          description: >-
            The trigger price for the stop order. Always equals the
            activation_price value submitted in the request.
          example: '40000'
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
          description: Error code
          example: 30
        message:
          type: string
          description: Error message
          example: Validation failed
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Detailed error information
    OrderStatus:
      type: string
      description: >-
        Order lifecycle status. `NEW` — accepted, not yet matched. `FILLED` —
        fully executed. `CANCELED` — canceled before execution. `PARTIAL_FILLED`
        — partially executed, remainder still active. `PARTIAL_CANCELED` —
        partially filled, remainder canceled. `CANCELED_TAKER_BAND` — partially
        filled up to the taker band limit, remainder canceled to protect against
        excessive order book slippage. `AUTO_CANCELED_REDUCE_ONLY` — pending
        reduce-only order auto-canceled because the associated position was
        closed. `AUTO_CANCELED_LIQUIDATION` — pending order auto-canceled
        because the associated position was force-liquidated. `CANCELED_STP` —
        order canceled by [Self-Trade
        Prevention](/platform/self-trade-prevention).
      example: FILLED
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-TXC-APIKEY
      description: The public WhiteBIT API key.
    PayloadAuth:
      type: apiKey
      in: header
      name: X-TXC-PAYLOAD
      description: Base64-encoded JSON request body.
    SignatureAuth:
      type: apiKey
      in: header
      name: X-TXC-SIGNATURE
      description: >-
        HMAC-SHA512 signature of the payload, hex-encoded. Computed as
        hex(HMAC-SHA512(payload, api_secret)).

````