curl --request GET \
--url https://api.zinc.com/orders \
--header 'Authorization: <api-key>'import requests
url = "https://api.zinc.com/orders"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.zinc.com/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.zinc.com/orders",
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: <api-key>"
],
]);
$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.com/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.com/orders")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"max_price": 123,
"attempts": 123,
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"quantity": 123,
"status": "pending",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [
"New"
],
"condition_not_in": [
"New"
],
"cancellation_reason": "<string>",
"error_type": "<string>",
"tracking_number_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
],
"shipping_address": {},
"retailer_credentials_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 123,
"is_gift": false,
"gift_message": "<string>",
"retailer_credentials_uuid": "<string>",
"job_result": {
"success": true,
"error": "<string>",
"error_type": "<string>",
"error_details": {
"code": "<string>",
"message": "<string>",
"url": "<string>",
"address_validation_reasons": [],
"field_errors": [],
"line_rejections": []
},
"price_components": {
"subtotal": 123,
"tax": 123,
"shipping": 123,
"discount": 123,
"fees": 123,
"total": 123,
"converted_payment_total": 123,
"currency": "<string>",
"payment_currency": "<string>",
"cart_items": [
{
"name": "<string>",
"product_id": "<string>",
"quantity": 123,
"unit_price": 123,
"line_total": 123
}
],
"line_items": [
{}
],
"breakdown_recorded": true
},
"estimated_delivery": "<string>",
"merchant_order_ids": [
{}
]
},
"merchant_order_ids": [],
"tracking_numbers": [],
"created_by": "<string>",
"user_id": 123,
"returns": [],
"connect": {
"state": "<string>",
"secured_amount": 123,
"order_cost": 123,
"customer_margin": 123,
"zinc_fee": 123,
"stripe_fee": 123,
"final_charge": 123,
"transfer_amount": 123,
"payment_intent_id": "<string>",
"connected_account_id": "<string>",
"simulated": false
},
"payment": {
"state": "<string>",
"authorized_cents": 123,
"fee_cents": 123,
"mode": "card",
"stripe_fee_cents": 123,
"captured_cents": 123,
"payment_method": "<string>",
"payment_intent_id": "<string>",
"simulated": false
},
"customer_notifications": {
"email": "<string>",
"delivered": true
},
"fulfillment": {
"gift": "best_effort",
"items": "best_effort",
"quantity": "best_effort",
"excluded_merchants": [
"<string>"
],
"concessions": []
}
}
],
"total": 123,
"limit": 123,
"offset": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}List Orders
List and filter all orders placed through your Zinc account.
curl --request GET \
--url https://api.zinc.com/orders \
--header 'Authorization: <api-key>'import requests
url = "https://api.zinc.com/orders"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.zinc.com/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.zinc.com/orders",
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: <api-key>"
],
]);
$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.com/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.com/orders")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"max_price": 123,
"attempts": 123,
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"quantity": 123,
"status": "pending",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [
"New"
],
"condition_not_in": [
"New"
],
"cancellation_reason": "<string>",
"error_type": "<string>",
"tracking_number_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
],
"shipping_address": {},
"retailer_credentials_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 123,
"is_gift": false,
"gift_message": "<string>",
"retailer_credentials_uuid": "<string>",
"job_result": {
"success": true,
"error": "<string>",
"error_type": "<string>",
"error_details": {
"code": "<string>",
"message": "<string>",
"url": "<string>",
"address_validation_reasons": [],
"field_errors": [],
"line_rejections": []
},
"price_components": {
"subtotal": 123,
"tax": 123,
"shipping": 123,
"discount": 123,
"fees": 123,
"total": 123,
"converted_payment_total": 123,
"currency": "<string>",
"payment_currency": "<string>",
"cart_items": [
{
"name": "<string>",
"product_id": "<string>",
"quantity": 123,
"unit_price": 123,
"line_total": 123
}
],
"line_items": [
{}
],
"breakdown_recorded": true
},
"estimated_delivery": "<string>",
"merchant_order_ids": [
{}
]
},
"merchant_order_ids": [],
"tracking_numbers": [],
"created_by": "<string>",
"user_id": 123,
"returns": [],
"connect": {
"state": "<string>",
"secured_amount": 123,
"order_cost": 123,
"customer_margin": 123,
"zinc_fee": 123,
"stripe_fee": 123,
"final_charge": 123,
"transfer_amount": 123,
"payment_intent_id": "<string>",
"connected_account_id": "<string>",
"simulated": false
},
"payment": {
"state": "<string>",
"authorized_cents": 123,
"fee_cents": 123,
"mode": "card",
"stripe_fee_cents": 123,
"captured_cents": 123,
"payment_method": "<string>",
"payment_intent_id": "<string>",
"simulated": false
},
"customer_notifications": {
"email": "<string>",
"delivered": true
},
"fulfillment": {
"gift": "best_effort",
"items": "best_effort",
"quantity": "best_effort",
"excluded_merchants": [
"<string>"
],
"concessions": []
}
}
],
"total": 123,
"limit": 123,
"offset": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Response
Returns an array of order objects, each containing:- id - Order UUID
- status - Current order status
- items - Products in the order
- shipping_address - Delivery address
- job_result - Processing results (for completed/failed orders)
- merchant_order_ids - The retailer’s own order number(s), once placed — see Merchant Order IDs
- created_at - Order creation timestamp
- updated_at - Last update timestamp
Order Statuses
| Status | Description |
|---|---|
pending | Order queued, not yet processing |
in_progress | Order is being placed |
ordered | Successfully placed with retailer |
shipped | Order shipped (tracking available) |
delivered | Order delivered to address |
cancelled | Order was cancelled |
failed | Order processing failed |
Filtering by teammate
user_email narrows the list to orders placed by one person on your
organization’s account. It matches as a case-insensitive substring of the
teammate’s email, so user_email=alex finds alex@example.com.
curl "https://api.zinc.com/orders?user_email=alex@example.com" \
-H "Authorization: Bearer <your_api_key>"
GET /orders/export, so you can
download one teammate’s orders as a CSV. The matched address is the created_by
column in that export.
Expanding tracking events
By default, list responses keep tracking payloads small: each tracking number includes itsstatus but not the full carrier checkpoint timeline. Pass include=tracking_events to embed the per-scan checkpoints array on every tracking number.
curl "https://api.zinc.com/orders?include=tracking_events" \
-H "Authorization: Bearer <your_api_key>"
GET /orders/{order_id}) always includes the full checkpoint timeline — include only affects the list endpoint. See Order Tracking for the checkpoint fields.Pagination
Authorizations
Zinc API key (Bearer zn_...)
Headers
Query Parameters
Number of orders to return
1 <= x <= 500Number of orders to skip
x >= 0Filter by order ID (partial match)
Partial match on order ID OR tracking number
Filter by the retailer's own order number (e.g. an Amazon 113-… ID), matched exactly against any of the order's order-placing jobs. Exact, not partial — dashes in the term are matched both as typed and stripped.
200Filter by the shipping recipient's name, matched as a case-insensitive substring of first_name last_name.
200Filter by order status
Filter to orders having at least one tracking number with this status
If true, only orders with at least one tracking number; if false, only orders with none
Filter by return-request status. open → orders with at least one open return. closed → orders with at least one approved or denied return. Omit for no filter.
Only orders created at/after this instant (inclusive)
Only orders created before this instant (exclusive)
Top-level metadata key to match, e.g. po_number. Must be sent together with metadata_value. Nested paths are not supported.
200Exact value metadata_key must equal. Matching is exact, not partial, and case-sensitive. Must be sent together with metadata_key.
500Filter to orders placed by one org teammate, matched as a case-insensitive substring of their email. Only ever narrows within the caller's organization; a solo user can only match their own address.
320Optional expansions. tracking_events embeds the full carrier checkpoint timeline (and latest status) on each tracking number; omitted by default to keep list payloads small.

