Retrieves trading instruments, filtered by currency and optional kind. Responses are cached for about 1 minute and can be stale relative to live book state.
Note - This method has distinct API rate limiting requirements: Sustained rate: 1 request/second. To avoid rate limits, we recommend using either the REST requests for server-cached data or the WebSocket subscription to instrument_state.{kind}.{currency} for real-time updates. For more information, see Rate Limits.
With expired=false (default) the list is not limited to tradable books. It includes visible instruments (open, settlement, locked, halted) plus inactive non-combo instruments. Inactive combos are omitted; combo kinds (future_combo, option_combo) return only visible books. is_active can therefore be false on this default list. Only state open accepts new orders.
With expired=true the list is instruments still in the live table with state delivered — recently expired, not archivized. Older expired or archivized names are looked up with public/get_instrument, not this method.
currency matches derivatives by settlement currency: inverse (reversed) contracts settle in the base coin (BTC for BTC-PERPETUAL), linear contracts typically settle in the quote coin (USDC for BTC_USDC-PERPETUAL). currency=any returns every settlement currency.
Spot matching is different. A spot's settlement field is the pair symbol (for example BTC_USDC), not BTC or USDC. When expired=false and kind is omitted/any for a specific currency, the response unions (1) derivatives with that settlement currency and (2) spots whose base or quote is that currency. kind=spot with a specific currency matches spots on either side of the pair. expired=true does not apply that extra spot union, so recently delivered spots are not returned under currency=BTC.
Results are sorted with perpetuals first, then by expiration. Each instrument includes underlying_type. Spot routed to Coinbase Exchange includes is_cbe_routed / is_csr. Set extended=true for extra commission and (on futures) margin/perpetual fields that public/get_instrument does not return.
📖 Related Articles:
Request
- Base URLhttps://test.deribit.com/api/v2
- URLhttps://test.deribit.com/api/v2/public/get_instruments
- Authnone declared
Query parameters
Currency name or "any" if don't care
The currency symbol or "any" for all.
📖 Related Article: Using the currency Parameter
Instrument kind: "future", "option", "spot", "future_combo", "option_combo" or "any" for all
Instrument kind. Omit the parameter or pass "any" for every kind.
Combos are selected with "future_combo" or "option_combo". "combo" (all combos) is not accepted here.
When false (default), return visible instruments plus inactive non-combo instruments. When true, return only instruments still in the live table with state delivered (recently expired, not archivized). Does not include the extra spot union used for a named currency when expired=false.
When true, each instrument also includes maker_max_commission, taker_max_commission, liquidation_max_commission, and settlement_max_commission. Futures additionally include margin_params and trading_bandwidth_fraction; perpetuals also include perpetual_dempener and perpetual_max_funding. Default false. public/get_instrument does not accept this parameter.
Response
Success response
Example response
{
"result": [
{
"min_trade_amount": 0.1,
"instrument_name": "BTC-PERPETUAL",
"creation_timestamp": 1536569522277,
"tick_size": 0.0001,
"contract_size": 1,
"lot_size": 1,
"maker_commission": 0.0001,
"taker_commission": 0.0005,
"max_liquidation_commission": 0.001,
"block_trade_commission": 0.0005,
"block_trade_tick_size": 0.01,
"block_trade_min_trade_amount": 25,
"max_leverage": 100,
"price_index": "btc_usdc",
"base_currency_uuid": "5b71fc48-3dd3-540c-809b-f8c94d0e68b5",
"quote_currency_uuid": "2b92315d-eab7-5bef-84fa-089a131333f5",
"index_id": 1000004,
"product_group": "BTC"
}
]
}Changes
- breaking
the response property
//became optional for the status - warning
added the new
RWAenum value to the//response property for the response status - warning
added the new
dayenum value to the//response property for the response status - warning
added the new
hourenum value to the//response property for the response status - warning
added the new
minuteenum value to the//response property for the response status - info
added the new optional
queryrequest parameterextended - info
added the new enum value
anyto thequeryrequest parameterkind - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
removed the
BTCenum value from the//response property for the response status - info
removed the
BTCenum value from the//response property for the response status - info
removed the
ETHenum value from the//response property for the response status - info
removed the
ETHenum value from the//response property for the response status - info
removed the
USDenum value from the//response property for the response status - info
removed the
USDenum value from the//response property for the response status - info
removed the
USDCenum value from the//response property for the response status
- breaking
- warning
removed the optional property
//from the response with the status
- warning