⚠️ Expected downtime: 15 - 30 minutes
Client impact: The system will be down for around 15 - 30 minutes. Client systems will not be able to communicate with Deribit during this time.
API changes
Breaking change — Estimated Liquidation Ratio fields removed
The estimated_liquidation_ratio and estimated_liquidation_ratio_map fields have been removed from all portfolio and account summary objects.
Affected methods:
Affected channels:
These fields were only ever returned for accounts using the segregated_sm margin model. Accounts on any other margin model are unaffected.
The related estimated_liquidation_price field on positions is unaffected by this change and continues to be returned as null in private/get_position, private/get_positions and private/get_subaccounts_details.
Spot trading routed to Coinbase Exchange
Selected spot instruments are matched on Coinbase Exchange (CBE) rather than the Deribit matching engine. Trading them works through the usual Deribit API, but several features behave differently or are unavailable. Derivatives are unaffected, including derivatives on the same currency pair. Please refer to the Spot Instruments article for more details.
Identifying routed instruments
public/get_instrument and public/get_instruments return is_cbe_routed: true (and its alias is_csr: true) for routed spot instruments. Both fields are omitted entirely for every other instrument, so test for presence rather than for a false value. Routed spot instruments also omit block_trade_commission, block_trade_tick_size and block_trade_min_trade_amount.
Order placement
Applies to private/buy, private/sell, private/edit and private/edit_by_label.
|
Deribit feature |
Routed spot |
|---|---|
|
Order types |
|
|
Time in force |
|
|
|
Allowed only together with |
|
|
Not supported |
|
|
Not supported |
|
Stop-limit trigger |
|
|
Linked orders (OTO / OCO / OTOCO) |
Not supported |
|
Block trades and Block RFQ legs |
Not supported |
good_til_day is rejected for all spot instruments, routed or not. Unlike native Deribit post-only, the price of a routed post-only order is never adjusted into the spread — the order is placed unmodified or rejected, which is why reject_post_only: true is mandatory.
Errors: post_only_not_allowed (11055), iceberg_not_allowed (11059), not_supported_for_coinbase_routed_spot (11060) and linked_order_type_not_supported_for_csr_spot (13922).
Rejections originating at Coinbase are returned as code 11030 with the message other_reject <reason>, for example other_reject price_band or other_reject not_enough_funds. See Error codes.
Note
Fills are asynchronous. private/buy, private/sell, private/edit and private/edit_by_label acknowledge the order once Coinbase accepts it. Fills are not guaranteed to be present in the trades array of the response. Subscribe to user.trades.{...} and user.orders.{...} to track execution.
Market data
The public trade tape Deribit sees for routed instruments is partial, so trade-derived methods reject rather than return incomplete data. The following return not_supported_for_coinbase_routed_spot (11060):
-
public/get_last_trades_by_currencyandpublic/get_last_trades_by_currency_and_time, whenkindisspotorany—anyis the default whenkindis omitted, and a currency counts as routed when it is the base or the quote of a routed pair
These subscriptions are rejected:
Two responses drop fields rather than returning an error:
-
public/get_trade_volumesomitsspot_volume, andspot_volume_7d/spot_volume_30dunderextended, for any currency with a routed pair. Other volume fields are unaffected. -
public/tickerand theticker.{instrument_name}.{interval}channel omitvolume_notionalandvolume_usdfromstatsfor routed spot. The basevolumefield is still returned.
Order book data is unaffected: public/get_order_book, public/get_book_summary_by_currency, public/get_book_summary_by_instrument and the book.*, quote.* and ticker.* channels work normally, fed from the Coinbase book.
For the full trade tape, candles and venue volume, query Coinbase Exchange directly using Get product trades, Get product candles, Get all product volume and the matches websocket channel.
FIX
-
OrdType (40): only1= Market,2= Limit,4= Stop Limit. See NewOrderSingle. -
TimeInForce (59):0= Good Til Day is rejected for all spot. -
ExecInst (18): only6A(post-only with reject) is accepted. A bare6is rejected withpost_only_not_allowed, andE(reduce only) withreduce_only_not_allowed. -
DisplayQty (1138): rejected withiceberg_not_allowed. -
DeribitConditionTriggerMethod: required on routed stop-limits and must be2= trade. -
MDEntryType (269):2= Trade is rejected in market data requests;0= Bid and1= Offer in the same request are still served.