private/cancel_quote
Cancels one open quote owned by the subaccount, identified by quote_id (optionally further constrained by rfq_id, label, or nonce). Returns the cancelled quote, or a quote-not-found error if it does not exist or is no longer open. Requires an RFQ trade scope.
curl --request POST \
--url https://api.derive.xyz/v3/private/cancel_quote \
--header 'Content-Type: application/json' \
--data '
{
"quote_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"subaccount_id": 1,
"label": null,
"nonce": null,
"rfq_id": null
}
'import requests
url = "https://api.derive.xyz/v3/private/cancel_quote"
payload = {
"quote_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"subaccount_id": 1,
"label": None,
"nonce": None,
"rfq_id": None
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
quote_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
subaccount_id: 1,
label: null,
nonce: null,
rfq_id: null
})
};
fetch('https://api.derive.xyz/v3/private/cancel_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://api.derive.xyz/v3/private/cancel_quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'quote_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'subaccount_id' => 1,
'label' => null,
'nonce' => null,
'rfq_id' => null
]),
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://api.derive.xyz/v3/private/cancel_quote"
payload := strings.NewReader("{\n \"quote_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"subaccount_id\": 1,\n \"label\": null,\n \"nonce\": null,\n \"rfq_id\": null\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.derive.xyz/v3/private/cancel_quote")
.header("Content-Type", "application/json")
.body("{\n \"quote_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"subaccount_id\": 1,\n \"label\": null,\n \"nonce\": null,\n \"rfq_id\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/private/cancel_quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"quote_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"subaccount_id\": 1,\n \"label\": null,\n \"nonce\": null,\n \"rfq_id\": null\n}"
response = http.request(request)
puts response.read_body{
"cancel_reason": "",
"creation_timestamp": 123,
"direction": "buy",
"extra_fee": "<string>",
"fee": "<string>",
"fill_pct": "<string>",
"is_transfer": true,
"label": "<string>",
"last_update_timestamp": 123,
"legs": [
{
"amount": "<string>",
"direction": "buy",
"instrument_name": "<string>",
"price": "<string>"
}
],
"legs_hash": "<string>",
"liquidity_role": "maker",
"max_fee": "<string>",
"mmp": true,
"nonce": "<string>",
"quote_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rfq_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signature_expiry_sec": 123,
"status": "open",
"subaccount_id": 123,
"batch_status": "Batching",
"tx_hash": "<string>"
}Body
Response
Success
, user_request, insufficient_margin, signed_max_fee_too_low, mmp_trigger, cancel_on_disconnect, session_key_deregistered, subaccount_withdrawn, rfq_no_longer_open, compliance, validation_failed buy, sell Non-negative decimal string of the human value (e.g. "1.5"), up to 12 fractional digits; a string or JSON number is accepted
Non-negative decimal string of the human value (e.g. "1.5"), up to 12 fractional digits; a string or JSON number is accepted
Non-negative decimal string of the human value (e.g. "1.5"), up to 12 fractional digits; a string or JSON number is accepted
Show child attributes
Show child attributes
maker, taker Non-negative decimal string of the human value (e.g. "1.5"), up to 12 fractional digits; a string or JSON number is accepted
UUID v4 string
UUID v4 string
open, filled, cancelled, expired Settlement batch status (only for executed quotes).
Batching, Executing, Da, Proving, Settling, Settled, BatchingError, ExecutingError, DaError, ProvingError, SettlingError, SettledError Blockchain transaction hash (only for executed quotes).
curl --request POST \
--url https://api.derive.xyz/v3/private/cancel_quote \
--header 'Content-Type: application/json' \
--data '
{
"quote_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"subaccount_id": 1,
"label": null,
"nonce": null,
"rfq_id": null
}
'import requests
url = "https://api.derive.xyz/v3/private/cancel_quote"
payload = {
"quote_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"subaccount_id": 1,
"label": None,
"nonce": None,
"rfq_id": None
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
quote_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
subaccount_id: 1,
label: null,
nonce: null,
rfq_id: null
})
};
fetch('https://api.derive.xyz/v3/private/cancel_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://api.derive.xyz/v3/private/cancel_quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'quote_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'subaccount_id' => 1,
'label' => null,
'nonce' => null,
'rfq_id' => null
]),
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://api.derive.xyz/v3/private/cancel_quote"
payload := strings.NewReader("{\n \"quote_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"subaccount_id\": 1,\n \"label\": null,\n \"nonce\": null,\n \"rfq_id\": null\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.derive.xyz/v3/private/cancel_quote")
.header("Content-Type", "application/json")
.body("{\n \"quote_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"subaccount_id\": 1,\n \"label\": null,\n \"nonce\": null,\n \"rfq_id\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.derive.xyz/v3/private/cancel_quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"quote_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"subaccount_id\": 1,\n \"label\": null,\n \"nonce\": null,\n \"rfq_id\": null\n}"
response = http.request(request)
puts response.read_body{
"cancel_reason": "",
"creation_timestamp": 123,
"direction": "buy",
"extra_fee": "<string>",
"fee": "<string>",
"fill_pct": "<string>",
"is_transfer": true,
"label": "<string>",
"last_update_timestamp": 123,
"legs": [
{
"amount": "<string>",
"direction": "buy",
"instrument_name": "<string>",
"price": "<string>"
}
],
"legs_hash": "<string>",
"liquidity_role": "maker",
"max_fee": "<string>",
"mmp": true,
"nonce": "<string>",
"quote_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rfq_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signature_expiry_sec": 123,
"status": "open",
"subaccount_id": 123,
"batch_status": "Batching",
"tx_hash": "<string>"
}