POST /client/trading/withdraw/{tradeId}/items/{itemId}/cancel.
Authentication: Client Token (Authorization header)
CS2 (Assetpay) items only. Rust withdrawals and autoseller-sourced items have no supplier cancel API. If every item in the trade is in one of those lanes the call fails with
TRADE_CANCEL_UNSUPPORTED (44); if only some are, they are simply left out of the result.Request
Path Parameters
Best effort, not all-or-nothing
The supplier decides which items still qualify, so a partial result is still a200. Read the body, not the status code:
requested— how many items the supplier considered cancellable at allcancelled/failed— how those splititems[]— one row per item the supplier reported on
items[] at all. An item must also be at least 30 minutes old and not yet terminal; younger items come back as failed with reason: "TRADE_CANCEL_TOO_SOON".
Response
A
cancelled row only confirms the marketplace accepted the cancellation. AssetPay does not change item state inline — the refund and the transition to canceled arrive asynchronously through the standard trade.* callback. Poll GET /client/trades/{id} or rely on callbacks for the final state, and refund the user’s balance when you receive the canceled callback.
A cancel lands on
canceled, not reverted. reverted is for a delivered item that came back afterwards.Rate Limits
Shared across all clients of the same merchant.