curl --request DELETE \
--url https://api.perpetuals.polymarket.com/v1/trade/orders \
--header 'Content-Type: application/json' \
--data '
{
"op": {
"type": "cancelOrders",
"args": [
1234567890
]
},
"sig": "0x1234567890...",
"salt": 1234567890,
"ts": 1767225600000,
"exp": 1767225600000
}
'import requests
url = "https://api.perpetuals.polymarket.com/v1/trade/orders"
payload = {
"op": {
"type": "cancelOrders",
"args": [1234567890]
},
"sig": "0x1234567890...",
"salt": 1234567890,
"ts": 1767225600000,
"exp": 1767225600000
}
headers = {"Content-Type": "application/json"}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
op: {type: 'cancelOrders', args: [1234567890]},
sig: '0x1234567890...',
salt: 1234567890,
ts: 1767225600000,
exp: 1767225600000
})
};
fetch('https://api.perpetuals.polymarket.com/v1/trade/orders', 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.perpetuals.polymarket.com/v1/trade/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'op' => [
'type' => 'cancelOrders',
'args' => [
1234567890
]
],
'sig' => '0x1234567890...',
'salt' => 1234567890,
'ts' => 1767225600000,
'exp' => 1767225600000
]),
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.perpetuals.polymarket.com/v1/trade/orders"
payload := strings.NewReader("{\n \"op\": {\n \"type\": \"cancelOrders\",\n \"args\": [\n 1234567890\n ]\n },\n \"sig\": \"0x1234567890...\",\n \"salt\": 1234567890,\n \"ts\": 1767225600000,\n \"exp\": 1767225600000\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.perpetuals.polymarket.com/v1/trade/orders")
.header("Content-Type", "application/json")
.body("{\n \"op\": {\n \"type\": \"cancelOrders\",\n \"args\": [\n 1234567890\n ]\n },\n \"sig\": \"0x1234567890...\",\n \"salt\": 1234567890,\n \"ts\": 1767225600000,\n \"exp\": 1767225600000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perpetuals.polymarket.com/v1/trade/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"op\": {\n \"type\": \"cancelOrders\",\n \"args\": [\n 1234567890\n ]\n },\n \"sig\": \"0x1234567890...\",\n \"salt\": 1234567890,\n \"ts\": 1767225600000,\n \"exp\": 1767225600000\n}"
response = http.request(request)
puts response.read_body[
{
"status": "ok",
"oid": 1234567890,
"ts": 1767225600000,
"coid": "550e8400e29b41d4a716446655440000"
}
]{
"status": "err",
"error": "insufficient_margin"
}{
"status": "err",
"error": "insufficient_margin"
}{
"status": "err",
"error": "insufficient_margin"
}Cancel Orders
Cancel orders. Requires proxy signature, see proxy signing.
curl --request DELETE \
--url https://api.perpetuals.polymarket.com/v1/trade/orders \
--header 'Content-Type: application/json' \
--data '
{
"op": {
"type": "cancelOrders",
"args": [
1234567890
]
},
"sig": "0x1234567890...",
"salt": 1234567890,
"ts": 1767225600000,
"exp": 1767225600000
}
'import requests
url = "https://api.perpetuals.polymarket.com/v1/trade/orders"
payload = {
"op": {
"type": "cancelOrders",
"args": [1234567890]
},
"sig": "0x1234567890...",
"salt": 1234567890,
"ts": 1767225600000,
"exp": 1767225600000
}
headers = {"Content-Type": "application/json"}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
op: {type: 'cancelOrders', args: [1234567890]},
sig: '0x1234567890...',
salt: 1234567890,
ts: 1767225600000,
exp: 1767225600000
})
};
fetch('https://api.perpetuals.polymarket.com/v1/trade/orders', 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.perpetuals.polymarket.com/v1/trade/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'op' => [
'type' => 'cancelOrders',
'args' => [
1234567890
]
],
'sig' => '0x1234567890...',
'salt' => 1234567890,
'ts' => 1767225600000,
'exp' => 1767225600000
]),
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.perpetuals.polymarket.com/v1/trade/orders"
payload := strings.NewReader("{\n \"op\": {\n \"type\": \"cancelOrders\",\n \"args\": [\n 1234567890\n ]\n },\n \"sig\": \"0x1234567890...\",\n \"salt\": 1234567890,\n \"ts\": 1767225600000,\n \"exp\": 1767225600000\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.perpetuals.polymarket.com/v1/trade/orders")
.header("Content-Type", "application/json")
.body("{\n \"op\": {\n \"type\": \"cancelOrders\",\n \"args\": [\n 1234567890\n ]\n },\n \"sig\": \"0x1234567890...\",\n \"salt\": 1234567890,\n \"ts\": 1767225600000,\n \"exp\": 1767225600000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perpetuals.polymarket.com/v1/trade/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"op\": {\n \"type\": \"cancelOrders\",\n \"args\": [\n 1234567890\n ]\n },\n \"sig\": \"0x1234567890...\",\n \"salt\": 1234567890,\n \"ts\": 1767225600000,\n \"exp\": 1767225600000\n}"
response = http.request(request)
puts response.read_body[
{
"status": "ok",
"oid": 1234567890,
"ts": 1767225600000,
"coid": "550e8400e29b41d4a716446655440000"
}
]{
"status": "err",
"error": "insufficient_margin"
}{
"status": "err",
"error": "insufficient_margin"
}{
"status": "err",
"error": "insufficient_margin"
}Body
Cancel request.
Show child attributes
Show child attributes
Signature in hex format
"0x1234567890..."
Salt
1234567890
Request timestamp. Unix milliseconds for most operations; Unix seconds for withdrawals (must match the on-chain EIP-712 struct verified against block.timestamp).
1767225600000
Command expiry timestamp in Unix milliseconds. If provided, it must be in the future and within the gateway's default command timeout. It can shorten request validity but cannot extend it. This is not an order auto-cancel time.
1767225600000
Response
Cancel response.
- Option 1
- Option 2
ok Order ID
1234567890
Cancellation outcome timestamp in Unix milliseconds
1767225600000
Echoed only when the request carried a client_order_id.
32^[0-9a-f]{32}$"550e8400e29b41d4a716446655440000"
Was this page helpful?