Get Bulk Upload
curl --request GET \
--url https://api.zinc.com/orders/bulk/{batch_id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.zinc.com/orders/bulk/{batch_id}"
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/bulk/{batch_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.com/orders/bulk/{batch_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: <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/bulk/{batch_id}"
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/bulk/{batch_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/orders/bulk/{batch_id}")
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{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"row_count": 123,
"placed_count": 123,
"failed_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"filename": "<string>",
"notify_on_complete": false,
"notified_at": "2023-11-07T05:31:56Z",
"rows": [
{
"index": 123,
"status": "<string>",
"order_id": "<string>",
"order_status": "<string>",
"error": "<string>",
"recipient": "<string>",
"product_urls": [
"<string>"
],
"passthrough": {}
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Bulk Orders
Get Bulk Upload
Retrieve a Zinc bulk upload batch with per-order status and results.
GET
/
orders
/
bulk
/
{batch_id}
Get Bulk Upload
curl --request GET \
--url https://api.zinc.com/orders/bulk/{batch_id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.zinc.com/orders/bulk/{batch_id}"
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/bulk/{batch_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.com/orders/bulk/{batch_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: <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/bulk/{batch_id}"
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/bulk/{batch_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/orders/bulk/{batch_id}")
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{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"row_count": 123,
"placed_count": 123,
"failed_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"filename": "<string>",
"notify_on_complete": false,
"notified_at": "2023-11-07T05:31:56Z",
"rows": [
{
"index": 123,
"status": "<string>",
"order_id": "<string>",
"order_status": "<string>",
"error": "<string>",
"recipient": "<string>",
"product_urls": [
"<string>"
],
"passthrough": {}
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Retrieve a batch with per-row results and live order statuses.
Batch Statuses
| Status | Description |
|---|---|
pending | Accepted, rows not yet processed |
processing | Rows are being placed |
completed | Every row has been processed |
failed | The batch could not be processed |
Per-Row Results
Each entry inrows reports the outcome for one CSV row:
- status —
pending,placed, orfailed. - order_id / order_status — Set once the row is placed; use Get Order for full order details.
- error — Failure reason for
failedrows. - passthrough — Your unrecognized CSV columns, echoed back for reconciliation.
Poll this endpoint while the batch is
pending or processing. Once it’s
completed, download the full results with
Download Bulk Results.Authorizations
Zinc API key (Bearer zn_...)
Headers
Path Parameters
Response
Successful Response
A bulk-upload batch and (on the detail endpoint) its per-row results.
Lifecycle of a CSV bulk-upload batch.
Available options:
pending, processing, completed, failed Show child attributes
Show child attributes

