curl --request GET \
--url https://test.deribit.com/api/v2/public/get_expirations \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 1,
"method": "public/get_expirations",
"params": {
"currency": "any",
"kind": "any"
}
}
'import requests
url = "https://test.deribit.com/api/v2/public/get_expirations"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "public/get_expirations",
"params": {
"currency": "any",
"kind": "any"
}
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'public/get_expirations',
params: {currency: 'any', kind: 'any'}
})
};
fetch('https://test.deribit.com/api/v2/public/get_expirations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://test.deribit.com/api/v2/public/get_expirations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'id' => 1,
'method' => 'public/get_expirations',
'params' => [
'currency' => 'any',
'kind' => 'any'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://test.deribit.com/api/v2/public/get_expirations"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"public/get_expirations\",\n \"params\": {\n \"currency\": \"any\",\n \"kind\": \"any\"\n }\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test.deribit.com/api/v2/public/get_expirations")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"public/get_expirations\",\n \"params\": {\n \"currency\": \"any\",\n \"kind\": \"any\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/public/get_expirations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"public/get_expirations\",\n \"params\": {\n \"currency\": \"any\",\n \"kind\": \"any\"\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"result": {
"future": [
"21SEP24",
"22SEP24",
"PERPETUAL"
],
"option": [
"21SEP24",
"22SEP24",
"23SEP24"
]
}
}public/get_expirations
Retrieves all available expiration timestamps for instruments. This method can be used to discover which expiration dates are available for trading, which is useful for finding instruments with specific expiration dates.
Results can be filtered by settlement currency, instrument kind (future or option), and currency pair. The response includes expiration timestamps in milliseconds since the UNIX epoch.
๐ Related Article: Using the currency Parameter
curl --request GET \
--url https://test.deribit.com/api/v2/public/get_expirations \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 1,
"method": "public/get_expirations",
"params": {
"currency": "any",
"kind": "any"
}
}
'import requests
url = "https://test.deribit.com/api/v2/public/get_expirations"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "public/get_expirations",
"params": {
"currency": "any",
"kind": "any"
}
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'public/get_expirations',
params: {currency: 'any', kind: 'any'}
})
};
fetch('https://test.deribit.com/api/v2/public/get_expirations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://test.deribit.com/api/v2/public/get_expirations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'id' => 1,
'method' => 'public/get_expirations',
'params' => [
'currency' => 'any',
'kind' => 'any'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://test.deribit.com/api/v2/public/get_expirations"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"public/get_expirations\",\n \"params\": {\n \"currency\": \"any\",\n \"kind\": \"any\"\n }\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test.deribit.com/api/v2/public/get_expirations")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"public/get_expirations\",\n \"params\": {\n \"currency\": \"any\",\n \"kind\": \"any\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/public/get_expirations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"public/get_expirations\",\n \"params\": {\n \"currency\": \"any\",\n \"kind\": \"any\"\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"result": {
"future": [
"21SEP24",
"22SEP24",
"PERPETUAL"
],
"option": [
"21SEP24",
"22SEP24",
"23SEP24"
]
}
}Query Parameters
The currency symbol or "any" for all or "grouped" for all grouped by currency.
๐ Related Article: Using the currency Parameter
Currency name or "any" if don't care or "grouped" if grouped by currencies
BTC, ETH, USDC, USDT, any, grouped Instrument kind, "future" or "option" or "any"
Instrument kind: "future", "option" or "any" for all
future, option, any The currency pair symbol Index identifier, matches (base) cryptocurrency with quote currency
btc_usd, eth_usd, ada_usdc, algo_usdc, avax_usdc, bch_usdc, bnb_usdc, btc_usdc, btcdvol_usdc, buidl_usdc, doge_usdc, dot_usdc, eurr_usdc, eth_usdc, ethdvol_usdc, hype_usdc, link_usdc, ltc_usdc, near_usdc, paxg_usdc, shib_usdc, sol_usdc, steth_usdc, ton_usdc, trump_usdc, trx_usdc, uni_usdc, usde_usdc, usyc_usdc, xrp_usdc, btc_usdt, eth_usdt, eurr_usdt, sol_usdt, steth_usdt, usdc_usdt, usde_usdt, btc_eurr, btc_usde, btc_usyc, eth_btc, eth_eurr, eth_usde, eth_usyc, steth_eth, paxg_btc, drbfix-btc_usdc, drbfix-eth_usdc Response
Success response
The JSON-RPC version (2.0)
2.0 Hide child attributes
Hide child attributes
Currency name or "any" if don't care or "grouped" if grouped by currencies
BTC, ETH, USDC, SOL, USDT, EURR, XRP, STETH, USYC, PAXG, BNB, USDE, any, grouped Instrument kind: "future", "option" or "any" for all
future, option, any The id that was sent in the request
Was this page helpful?