Retrieve Cancellation
curl --request GET \
--url https://api.zinc.io/v1/cancellations/{request_id} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.zinc.io/v1/cancellations/{request_id}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.zinc.io/v1/cancellations/{request_id}', 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.zinc.io/v1/cancellations/{request_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zinc.io/v1/cancellations/{request_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zinc.io/v1/cancellations/{request_id}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.io/v1/cancellations/{request_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"_type": "cancellation_response",
"merchant_order_id": "<string>",
"request": {}
}{
"_type": "error",
"code": "<string>",
"message": "<string>",
"data": {}
}Cancellations & Returns
Retrieve Cancellation
Retrieve the status of a cancellation
GET
/
v1
/
cancellations
/
{request_id}
Retrieve Cancellation
curl --request GET \
--url https://api.zinc.io/v1/cancellations/{request_id} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.zinc.io/v1/cancellations/{request_id}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.zinc.io/v1/cancellations/{request_id}', 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.zinc.io/v1/cancellations/{request_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zinc.io/v1/cancellations/{request_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zinc.io/v1/cancellations/{request_id}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.io/v1/cancellations/{request_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"_type": "cancellation_response",
"merchant_order_id": "<string>",
"request": {}
}{
"_type": "error",
"code": "<string>",
"message": "<string>",
"data": {}
}You will receive either a
request_processing response, an error response, or a successful cancellation response of type cancellation_response.
Attempting to Cancel State
In approximately 50% of cases, Amazon cannot immediately cancel an order and will respond with an “attempting to cancel” status:Example attempting_to_cancel Response
{
"_type": "error",
"code": "attempting_to_cancel",
"message": "The retailer is attempting to cancel the order.",
"data": {
"msg": "Attempting to cancel order"
},
"request": {
...
}
}
Processing Time: When a cancellation enters the
attempting_to_cancel state, Zinc will continue polling the retailer to determine the final status. No guarantees can be made for how long this will take.State Transitions
Theattempting_to_cancel state is temporary and will eventually resolve to one of:
- Successful cancellation - Order was cancelled successfully
- Failed cancellation - Cancellation was rejected or failed
Webhook Behavior
If you’re using webhooks, you’ll receive notifications for state changes:- Initial
attempting_to_cancel-request_failedwebhook is triggered - Final resolution:
- If cancellation succeeds →
request_succeededwebhook - If cancellation fails →
request_failedwebhook (again with updated response)
- If cancellation succeeds →
Using webhooks eliminates the need to poll the cancellation request ID for status updates.
Authorizations
Use your client token as the username. Leave the password blank.
Path Parameters
The unique identifier for the cancellation request

