Upcoming Changes
Trailing Stop Order — Algo order enhancement
Last update: Aug 27, 2026
BloFin is adding trailing stop orders to the Open API, aligning API capabilities with the existing App/Web feature. A trailing stop order tracks favorable price movements using the last price and submits a market order when the price retraces by a preset callback amount from the extreme price reached after activation.
The feature is built on the existing algo order framework. No new endpoints or channels are introduced.
Place Algo Order POST /api/v1/trade/order-algo
- A new
orderTypeenumeration valuetrailing_stopis added. - New request parameters:
callbackRatio(callback rate,0.001–1, step0.001),callbackSpread(callback price distance), andactivePrice(activation price; if omitted, the order is activated immediately). EithercallbackRatioorcallbackSpreadis required, but not both. sizesupports-1for the entire position: the triggered market order is placed with the actual position size at the moment of triggering.positionIdis required in Multi-Position mode (ignored otherwise), consistent with the Multi-Position conventions for TP/SL and algo orders.- Activation and tracking both use the last price. For
buyordersactivePricemust be lower than the last price; forsellorders it must be higher; otherwise the order is rejected (order would immediately trigger). - Trailing stop orders are executed at market price only;
pricemust not be passed.
Get Algo Orders GET /api/v1/trade/orders-algo-pending / orders-algo-history
orderType=trailing_stopis supported for filtering.- New response fields:
callbackRatio,callbackSpread,activePrice,moveTriggerPrice(current dynamic trigger price; empty = not yet activated, non-empty = activated and tracking) andpositionId. - The existing
stateenumeration is reused:live(placed; not activated, or activated and tracking) →effective(triggered, market order submitted) /canceled/order_failed. No new state values are introduced. - The triggered market order may be split into multiple child orders; child order IDs are not returned in the algo order. Correlate child orders by
instIdand the triggering time window.
Amend Algo Order POST /api/v1/trade/amend-algo
- Trailing stop orders can be amended:
newSize(positive values only;-1is not supported),newCallbackRatio/newCallbackSpread(mutually exclusive per request; switching the callback form is supported) andnewActivePrice(only before activation). - Amending the callback of an activated order preserves the recorded extreme price; the dynamic trigger price is recalculated without resetting tracking.
- The existing
requestIdandttlsemantics apply.
Cancel Algo Order POST /api/v1/trade/cancel-algo
No changes. Trailing stop orders are canceled via the existing endpoint by algoId or clientOrderId. When the associated position is fully closed, liquidated, or ADLed, the reduce-side trailing stop order is automatically canceled with cancelType=system; it is recommended to check the position upon receiving a system cancellation and re-place the order if the position is non-zero.
WebSocket orders-algo channel
- Trailing stop order updates are pushed via the existing private channel with the new fields above.
- Messages are pushed on state changes and at the moment of activation (a
liveupdate carrying the firstmoveTriggerPrice); price movements during tracking are not pushed tick by tick. - Amendment results are pushed via the
amendResultfield.
Limits & error codes
- Each trading account may have a maximum of 50 pending (untriggered) partial-position trailing stop orders, of which at most 10 per instrument. In addition, each position may have 1 full-position (
size=-1) trailing stop order, which does not count toward the 50-order limit. - New error codes for invalid callback parameters, invalid activation price, and the pending order limit will be published with the release. Multi-Position related errors reuse the unified Multi-Position error codes.
Effective date
To be announced.
2026-08-27
Spot API Launch
BloFin Spot API is now live and open to the public. It provides full REST and WebSocket support for spot trading. See the Spot API documentation for details.
- Endpoints
- REST root URL:
https://openapi.blofin.com - Public WebSocket:
wss://openapi.blofin.com/ws/spot/public - Private WebSocket:
wss://openapi.blofin.com/ws/spot/private - Demo trading is supported via
https://demo-trading-openapi.blofin.comand the correspondingws/spot/public,ws/spot/privateendpoints.
- REST root URL:
- Public Data (no authentication required)
- Added market data endpoints: GET Instruments (
/api/v1/spot/market/instruments), GET Tickers (/api/v1/spot/market/tickers), GET Order Book (/api/v1/spot/market/books), GET Trades (/api/v1/spot/market/trades), and GET Candlesticks (/api/v1/spot/market/candles). - Added public WebSocket channels:
trades,candle*(1m–1M),books/books5(with incremental order book updates viaseqId/prevSeqId), andtickers. All spot subscriptions requireinstType: SPOT.
- Added market data endpoints: GET Instruments (
- Trading
- Added order endpoints: Place Order (
/api/v1/spot/trade/order), Place Multiple Orders (/api/v1/spot/trade/batch-orders), and Place Algo Order (/api/v1/spot/trade/order-algo,triggertype). - Added cancellation endpoints: Cancel Order (
/api/v1/spot/trade/cancel-order), Cancel Multiple Orders (/api/v1/spot/trade/cancel-batch-orders), and Cancel Algo Order (/api/v1/spot/trade/cancel-algo). - Added query endpoints: GET Active Orders (
/api/v1/spot/trade/orders-pending), GET Order Detail (/api/v1/spot/trade/order-detail), GET Active Algo Orders (/api/v1/spot/trade/orders-algo-pending), GET Order History (/api/v1/spot/trade/orders-history), GET Algo Order History (/api/v1/spot/trade/orders-algo-history), GET Trade History (/api/v1/spot/trade/fills-history), and GET Trade Order Price Range (/api/v1/spot/trade/order/price-range). - Supported order types:
market,limit,post_only,fok,ioc; market orders supporttargetCurrency(base_currency/quote_currency). - Added private WebSocket channels:
orders,orders-algo,spot-account, andaccount.
- Added order endpoints: Place Order (
- Account
- GET Balance (
/api/v1/asset/balances) and Funds Transfer (/api/v1/asset/transfer) support thespotaccount type.
- GET Balance (
- User
- Added GET API Key Info (
/api/v1/user/query-apikey).
- Added GET API Key Info (
Authentication, signature algorithm, and rate limits are consistent with the existing Futures API.
Delisted Instruments
- Added Get Instruments History (
GET /api/v1/market/instruments-history): a public endpoint returning the metadata of all delisted USDT-margined contracts. All historically delisted contracts are backfilled; metadata is permanently retained, with field values frozen at the values effective at delisting. - Response fields are consistent with
GET /api/v1/market/instruments, except thatlistTime,expireTime,offTime,thresholdX,thresholdYandthresholdZare not returned;stateis alwaysdelisted. instIdis supported for querying a single delisted instrument; an unmatchedinstId(never existed, or still live) returnscode=0with an emptydataarray. The endpoint returns the full list; pagination is not supported and the order of results is not guaranteed.- At any moment, an
instIdappears in exactly one ofGET /api/v1/market/instrumentsand this endpoint. Contract specifications (contractValue,settleCurrency,contractType) remain unchanged across delisting and relisting — any specification change requires a new instrument ID. GET /api/v1/market/instrumentsis not affected.
Multi-Position Mode (Position-by-Order)
Multi-Position mode is now supported in the Open API. When enabled, each opening order creates an independent position with its own positionId, entry price, margin, leverage, and TP/SL, instead of being merged into a single position per instrument and direction. Available under Hedge Mode (long_short_mode) only; both cross and isolated are supported. Accounts that do not enable Multi-Position are not affected — new response fields return an empty string. See the Multi-Position Mode section for full details.
- Set / GET Position Mode: added the account-level switch
multiPosition(trueonly underlong_short_mode; switching requires no open orders or positions; sub-accounts are configured independently). - Place Order / Place Multiple Orders: added the
positionIdrequest parameter (required for closing orders; optional for opening orders — omit to open a new position, or pass to add to an existing position, inheriting its leverage). Pending add-position orders are automatically canceled when the target position is fully closed or liquidated. Responses now returnpositionIdper order result (echoed for close/add orders; empty for new opening orders until filled). - Place TPSL Order / Place Algo Order: added the
positionIdparameter, required in Multi-Position mode;size=-1refers to the entire specified position. - Close Positions: added the
positionIdparameter, required in Multi-Position mode; the response echoespositionId. There is no close-all semantic. - Set Leverage: added the optional
positionIdparameter to adjust a single position’s leverage; instrument-level leverage can be modified while holding positions and applies to newly opened positions only. Positions on the same instrument and direction may hold different leverage. - GET Positions: multiple entries may be returned per
instIdandpositionSide, keyed bypositionId; added the optionalpositionIdrequest parameter. - Order queries (Order Detail / Active Orders / Order History, TP/SL and algo queries): added the
positionIdresponse field. - WebSocket: the
positionschannel pushes atpositionIdgranularity and pushes a finalpositions=0message when a position is fully closed; theorderschannel adds thepositionIdfield. - Limits: up to
10positions per instrument; exceeding the limit rejects the opening order. reduceOnlyis not supported under Hedge Mode and is ignored if passed.
2026-08-19
Order Amendment
- Added order amendment APIs: Amend Order (
/api/v1/trade/amend-order), Amend Multiple Orders (/api/v1/trade/amend-batch-orders), Amend TP/SL Order (/api/v1/trade/amend-tpsl), and Amend Algo Order (/api/v1/trade/amend-algo). - Amend supports modifying price, size, and take-profit / stop-loss;
requestId(idempotency) andttl(request validity) are supported. - Added amend-related fields to the private
ordersWebSocket channel:amendResult,amendSource,requestId. - Added amend error codes:
102067,102148,152420,152421,152423,152428,152429.