curl --request GET \
--url https://test.deribit.com/api/v2/private/cancel_block_rfq_quote \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 1,
"method": "private/cancel_block_rfq_quote",
"params": {
"label": "example_quote",
"block_rfq_id": 3
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/cancel_block_rfq_quote"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "private/cancel_block_rfq_quote",
"params": {
"label": "example_quote",
"block_rfq_id": 3
}
}
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: 'private/cancel_block_rfq_quote',
params: {label: 'example_quote', block_rfq_id: 3}
})
};
fetch('https://test.deribit.com/api/v2/private/cancel_block_rfq_quote', 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/cancel_block_rfq_quote",
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' => 'private/cancel_block_rfq_quote',
'params' => [
'label' => 'example_quote',
'block_rfq_id' => 3
]
]),
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/cancel_block_rfq_quote"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/cancel_block_rfq_quote\",\n \"params\": {\n \"label\": \"example_quote\",\n \"block_rfq_id\": 3\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/cancel_block_rfq_quote")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/cancel_block_rfq_quote\",\n \"params\": {\n \"label\": \"example_quote\",\n \"block_rfq_id\": 3\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/cancel_block_rfq_quote")
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\": \"private/cancel_block_rfq_quote\",\n \"params\": {\n \"label\": \"example_quote\",\n \"block_rfq_id\": 3\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": {
"label": "example_quote",
"amount": 20000,
"direction": "buy",
"price": 74600,
"legs": [
{
"direction": "buy",
"price": 74600,
"instrument_name": "BTC-15NOV24",
"ratio": 1
}
],
"creation_timestamp": 1731076586371,
"block_rfq_id": 3,
"replaced": false,
"filled_amount": 0,
"last_update_timestamp": 1731076655746,
"hedge": {
"amount": 10,
"direction": "buy",
"price": 70000,
"instrument_name": "BTC-PERPETUAL"
},
"block_rfq_quote_id": 8,
"quote_state": "cancelled"
}
}private/cancel_block_rfq_quote
Maker method
Cancels a single Block RFQ quote. You can identify the quote to cancel using either:
block_rfq_quote_id- the unique ID of the quoteblock_rfq_id+label- the Block RFQ ID and the quote label
Note: Mass cancellation by label is not supported. This method cancels only one quote at a time. To cancel all quotes, use private/cancel_all_block_rfq_quotes.
๐ Related Article: Deribit Block RFQ API walkthrough
Scope: block_rfq:read_write
curl --request GET \
--url https://test.deribit.com/api/v2/private/cancel_block_rfq_quote \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"id": 1,
"method": "private/cancel_block_rfq_quote",
"params": {
"label": "example_quote",
"block_rfq_id": 3
}
}
'import requests
url = "https://test.deribit.com/api/v2/private/cancel_block_rfq_quote"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "private/cancel_block_rfq_quote",
"params": {
"label": "example_quote",
"block_rfq_id": 3
}
}
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: 'private/cancel_block_rfq_quote',
params: {label: 'example_quote', block_rfq_id: 3}
})
};
fetch('https://test.deribit.com/api/v2/private/cancel_block_rfq_quote', 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/cancel_block_rfq_quote",
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' => 'private/cancel_block_rfq_quote',
'params' => [
'label' => 'example_quote',
'block_rfq_id' => 3
]
]),
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/cancel_block_rfq_quote"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/cancel_block_rfq_quote\",\n \"params\": {\n \"label\": \"example_quote\",\n \"block_rfq_id\": 3\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/cancel_block_rfq_quote")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"private/cancel_block_rfq_quote\",\n \"params\": {\n \"label\": \"example_quote\",\n \"block_rfq_id\": 3\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://test.deribit.com/api/v2/private/cancel_block_rfq_quote")
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\": \"private/cancel_block_rfq_quote\",\n \"params\": {\n \"label\": \"example_quote\",\n \"block_rfq_id\": 3\n }\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": {
"label": "example_quote",
"amount": 20000,
"direction": "buy",
"price": 74600,
"legs": [
{
"direction": "buy",
"price": 74600,
"instrument_name": "BTC-15NOV24",
"ratio": 1
}
],
"creation_timestamp": 1731076586371,
"block_rfq_id": 3,
"replaced": false,
"filled_amount": 0,
"last_update_timestamp": 1731076655746,
"hedge": {
"amount": 10,
"direction": "buy",
"price": 70000,
"instrument_name": "BTC-PERPETUAL"
},
"block_rfq_quote_id": 8,
"quote_state": "cancelled"
}
}Query Parameters
ID of the Block RFQ quote
User defined label for the Block RFQ quote (maximum 64 characters). Used to identify quotes of a selected Block RFQ
ID of the Block RFQ
Response
Success response
The JSON-RPC version (2.0)
2.0 Hide child attributes
Hide child attributes
The timestamp when quote was created (milliseconds since the Unix epoch)
1536569522277
Timestamp of the last update of the quote (milliseconds since the UNIX epoch)
1536569522277
ID of the Block RFQ
ID of the Block RFQ quote
State of the quote
Execution instruction of the quote. Default - any_part_of
"all_or_none (AON)"- The quote can only be filled entirely or not at all, ensuring that its amount matches the amount specified in the Block RFQ. Additionally, 'all_or_none' quotes have priority over 'any_part_of' quotes at the same price level."any_part_of (APO)"- The quote can be filled either partially or fully, with the filled amount potentially being less than the Block RFQ amount.
any_part_of, all_or_none Price of a quote
This value multiplied by the ratio of a leg gives trade size on that leg.
Direction of trade from the maker perspective
buy, sell Filled amount of the quote. For perpetual and futures the filled_amount is in USD units, for options - in units or corresponding cryptocurrency contracts, e.g., BTC or ETH.
Hide child attributes
Hide child attributes
It represents the requested hedge leg size. For perpetual and inverse futures the amount is in USD units. For options and linear futures it is the underlying base currency coin.
Unique instrument identifier
"BTC-PERPETUAL"
Direction: buy, or sell
buy, sell Price for a hedge leg
true if the quote was edited, otherwise false.
User defined label for the quote (maximum 64 characters)
The name of the application that placed the quote on behalf of the user (optional).
"Example Application"
Reason of quote cancellation
The id that was sent in the request
Was this page helpful?