Cancel
Cancels a pending order with an immediate atomic refund, or queues a cancel-request to the upstream provider for an in-flight order. Both flows return success synchronously — for in-flight cancels the eventual outcome shows up in the order's status the next time you query it.
POST
https://notpanel.com/api/v2action=cancelAPI key requiredRate limited (per-key + per-tier + per-IP)Body:
application/x-www-form-urlencodedParameters
| Name | Type | Description |
|---|---|---|
| keyRequired | string | Your API key. |
| actionRequired | string | Must be the literal string "cancel". |
| order | string | Single-order ID. Either order or orders is required, not both. |
| orders | string (CSV) | Up to 100 comma-separated order IDs. Returns an array — each row carries either {order, cancel} on success or {order, error} per row. |
Example request
Replace YOUR_API_KEYwith the key generated under your dashboard’s API page.
curl -X POST https://notpanel.com/api/v2 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=cancel&order=ord_01HG9X7KJP4N..."const res = await fetch("https://notpanel.com/api/v2", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
action: "cancel",
order: "ord_01HG9X7KJP4N...",
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://notpanel.com/api/v2",
data={
"key": "YOUR_API_KEY",
"action": "cancel",
"order": "ord_01HG9X7KJP4N...",
},
)
print(res.json())<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'cancel',
'order' => 'ord_01HG9X7KJP4N...',
]);
$response = file_get_contents('https://notpanel.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => $body,
'ignore_errors' => true,
],
]));
print_r(json_decode($response, true));
Example response
{
"cancel": "ord_01HG9X7KJP4N..."
}Common errors
| Status | Body | Cause |
|---|---|---|
| 400 | {"error":"Order not found"} | Order ID doesn't exist or doesn't belong to your account. |
| 400 | {"error":"Order cannot be cancelled (already completed)"} | Order is in a terminal state (completed, cancelled, refunded). Use refill instead if delivery was incomplete. |
| 400 | {"error":"Service does not support cancellation"} | Service has cancel=false in the catalog. Pending orders can still be cancelled regardless. |