curl --request GET \
--url https://test.deribit.com/api/v2/private/create_combo \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 6,
"method": "private/create_combo",
"params": {
"trades": [
{
"instrument_name": "BTC-29APR22-37500-C",
"amount": "1",
"direction": "buy"
},
{
"instrument_name": "BTC-29APR22-37500-P",
"amount": "1",
"direction": "sell"
}
]
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/create_combo"
payload = {
"jsonrpc": "2.0",
"id": 6,
"method": "private/create_combo",
"params": { "trades": [
{
"instrument_name": "BTC-29APR22-37500-C",
"amount": "1",
"direction": "buy"
},
{
"instrument_name": "BTC-29APR22-37500-P",
"amount": "1",
"direction": "sell"
}
] }
}
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: 6,
method: 'private/create_combo',
params: {
trades: [
{instrument_name: 'BTC-29APR22-37500-C', amount: '1', direction: 'buy'},
{instrument_name: 'BTC-29APR22-37500-P', amount: '1', direction: 'sell'}
]
}
})
};
fetch('https://test.deribit.com/api/v2/private/create_combo', 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/private/create_combo",
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' => 6,
'method' => 'private/create_combo',
'params' => [
'trades' => [
[
'instrument_name' => 'BTC-29APR22-37500-C',
'amount' => '1',
'direction' => 'buy'
],
[
'instrument_name' => 'BTC-29APR22-37500-P',
'amount' => '1',
'direction' => 'sell'
]
]
]
]),
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/private/create_combo"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 6,\n \"method\": \"private/create_combo\",\n \"params\": {\n \"trades\": [\n {\n \"instrument_name\": \"BTC-29APR22-37500-C\",\n \"amount\": \"1\",\n \"direction\": \"buy\"\n },\n {\n \"instrument_name\": \"BTC-29APR22-37500-P\",\n \"amount\": \"1\",\n \"direction\": \"sell\"\n }\n ]\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/private/create_combo")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 6,\n \"method\": \"private/create_combo\",\n \"params\": {\n \"trades\": [\n {\n \"instrument_name\": \"BTC-29APR22-37500-C\",\n \"amount\": \"1\",\n \"direction\": \"buy\"\n },\n {\n \"instrument_name\": \"BTC-29APR22-37500-P\",\n \"amount\": \"1\",\n \"direction\": \"sell\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/create_combo")
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\": 6,\n \"method\": \"private/create_combo\",\n \"params\": {\n \"trades\": [\n {\n \"instrument_name\": \"BTC-29APR22-37500-C\",\n \"amount\": \"1\",\n \"direction\": \"buy\"\n },\n {\n \"instrument_name\": \"BTC-29APR22-37500-P\",\n \"amount\": \"1\",\n \"direction\": \"sell\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 6,
"result": {
"state_timestamp": 1650960943922,
"state": "active",
"legs": [
{
"instrument_name": "BTC-29APR22-37500-C",
"amount": 1
},
{
"instrument_name": "BTC-29APR22-37500-P",
"amount": -1
}
],
"id": "BTC-REV-29APR22-37500",
"instrument_id": 52,
"creation_timestamp": 1650960943000
}
}private/create_combo
Verifies and creates a combo book or returns an existing combo matching the given trades. Combos allow trading on multiple instruments (futures and options) simultaneously as a single strategy.
If a combo matching the provided trades already exists, this method returns the existing combo. Otherwise, it creates a new combo book with the specified leg structure.
Scope: trade:read_write
curl --request GET \
--url https://test.deribit.com/api/v2/private/create_combo \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 6,
"method": "private/create_combo",
"params": {
"trades": [
{
"instrument_name": "BTC-29APR22-37500-C",
"amount": "1",
"direction": "buy"
},
{
"instrument_name": "BTC-29APR22-37500-P",
"amount": "1",
"direction": "sell"
}
]
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/create_combo"
payload = {
"jsonrpc": "2.0",
"id": 6,
"method": "private/create_combo",
"params": { "trades": [
{
"instrument_name": "BTC-29APR22-37500-C",
"amount": "1",
"direction": "buy"
},
{
"instrument_name": "BTC-29APR22-37500-P",
"amount": "1",
"direction": "sell"
}
] }
}
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: 6,
method: 'private/create_combo',
params: {
trades: [
{instrument_name: 'BTC-29APR22-37500-C', amount: '1', direction: 'buy'},
{instrument_name: 'BTC-29APR22-37500-P', amount: '1', direction: 'sell'}
]
}
})
};
fetch('https://test.deribit.com/api/v2/private/create_combo', 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/private/create_combo",
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' => 6,
'method' => 'private/create_combo',
'params' => [
'trades' => [
[
'instrument_name' => 'BTC-29APR22-37500-C',
'amount' => '1',
'direction' => 'buy'
],
[
'instrument_name' => 'BTC-29APR22-37500-P',
'amount' => '1',
'direction' => 'sell'
]
]
]
]),
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/private/create_combo"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 6,\n \"method\": \"private/create_combo\",\n \"params\": {\n \"trades\": [\n {\n \"instrument_name\": \"BTC-29APR22-37500-C\",\n \"amount\": \"1\",\n \"direction\": \"buy\"\n },\n {\n \"instrument_name\": \"BTC-29APR22-37500-P\",\n \"amount\": \"1\",\n \"direction\": \"sell\"\n }\n ]\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/private/create_combo")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 6,\n \"method\": \"private/create_combo\",\n \"params\": {\n \"trades\": [\n {\n \"instrument_name\": \"BTC-29APR22-37500-C\",\n \"amount\": \"1\",\n \"direction\": \"buy\"\n },\n {\n \"instrument_name\": \"BTC-29APR22-37500-P\",\n \"amount\": \"1\",\n \"direction\": \"sell\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/create_combo")
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\": 6,\n \"method\": \"private/create_combo\",\n \"params\": {\n \"trades\": [\n {\n \"instrument_name\": \"BTC-29APR22-37500-C\",\n \"amount\": \"1\",\n \"direction\": \"buy\"\n },\n {\n \"instrument_name\": \"BTC-29APR22-37500-P\",\n \"amount\": \"1\",\n \"direction\": \"sell\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 6,
"result": {
"state_timestamp": 1650960943922,
"state": "active",
"legs": [
{
"instrument_name": "BTC-29APR22-37500-C",
"amount": 1
},
{
"instrument_name": "BTC-29APR22-37500-P",
"amount": -1
}
],
"id": "BTC-REV-29APR22-37500",
"instrument_id": 52,
"creation_timestamp": 1650960943000
}
}Query Parameters
List of trades used to create a combo
Hide child attributes
Hide child attributes
Unique instrument identifier
"BTC-PERPETUAL"
It represents the requested order size. For perpetual and inverse futures the amount is in USD units. For options and linear futures it is the underlying base currency coin.
Direction: buy, or sell
buy, sell Response
Success response
The JSON-RPC version (2.0)
2.0 Combo book metadata from public/get_combos, public/get_combo_details, and private/create_combo. Not the full instrument object returned by public/get_instrument.
Hide child attributes
Hide child attributes
Unique combo identifier
"BTC-FS-31DEC21-PERP"
Instrument ID
Combo book state: "active" or "inactive". Distinct from the instrument order-book state (open, locked, and so on).
active, inactive Time the combo book last changed state (milliseconds since the UNIX epoch).
1536569522277
Time the combo instrument was created (milliseconds since the UNIX epoch).
1536569522277
The id that was sent in the request
Was this page helpful?