curl --request POST \
--url https://api.zinc.com/orders \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"products": [
{
"url": "https://www.amazon.com/dp/B07JGBW826",
"quantity": 1,
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [],
"condition_not_in": []
}
],
"max_price": 1,
"shipping_address": {
"first_name": "<string>",
"last_name": "<string>",
"address_line1": "<string>",
"city": "<string>",
"postal_code": "<string>",
"phone_number": "<string>",
"address_line2": "<string>",
"state": "<string>",
"country": "US"
},
"idempotency_key": "<string>",
"retailer_credentials_id": "<string>",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 2,
"is_gift": false,
"gift_message": "<string>",
"payment": {
"mode": "wallet",
"payment_method": "<string>",
"customer": "<string>",
"margin": {
"value": 1
}
},
"customer_notifications": {
"email": "jsmith@example.com"
},
"fulfillment": {
"gift": "best_effort",
"items": "best_effort",
"quantity": "best_effort",
"excluded_merchants": [
"<string>"
]
}
}
'import requests
url = "https://api.zinc.com/orders"
payload = {
"products": [
{
"url": "https://www.amazon.com/dp/B07JGBW826",
"quantity": 1,
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [],
"condition_not_in": []
}
],
"max_price": 1,
"shipping_address": {
"first_name": "<string>",
"last_name": "<string>",
"address_line1": "<string>",
"city": "<string>",
"postal_code": "<string>",
"phone_number": "<string>",
"address_line2": "<string>",
"state": "<string>",
"country": "US"
},
"idempotency_key": "<string>",
"retailer_credentials_id": "<string>",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 2,
"is_gift": False,
"gift_message": "<string>",
"payment": {
"mode": "wallet",
"payment_method": "<string>",
"customer": "<string>",
"margin": { "value": 1 }
},
"customer_notifications": { "email": "jsmith@example.com" },
"fulfillment": {
"gift": "best_effort",
"items": "best_effort",
"quantity": "best_effort",
"excluded_merchants": ["<string>"]
}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
products: [
{
url: 'https://www.amazon.com/dp/B07JGBW826',
quantity: 1,
variant: [{label: '<string>', value: '<string>'}],
condition_in: [],
condition_not_in: []
}
],
max_price: 1,
shipping_address: {
first_name: '<string>',
last_name: '<string>',
address_line1: '<string>',
city: '<string>',
postal_code: '<string>',
phone_number: '<string>',
address_line2: '<string>',
state: '<string>',
country: 'US'
},
idempotency_key: '<string>',
retailer_credentials_id: '<string>',
metadata: {},
po_number: '<string>',
handling_days_max: 2,
is_gift: false,
gift_message: '<string>',
payment: {
mode: 'wallet',
payment_method: '<string>',
customer: '<string>',
margin: {value: 1}
},
customer_notifications: {email: 'jsmith@example.com'},
fulfillment: {
gift: 'best_effort',
items: 'best_effort',
quantity: 'best_effort',
excluded_merchants: ['<string>']
}
})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'products' => [
[
'url' => 'https://www.amazon.com/dp/B07JGBW826',
'quantity' => 1,
'variant' => [
[
'label' => '<string>',
'value' => '<string>'
]
],
'condition_in' => [
],
'condition_not_in' => [
]
]
],
'max_price' => 1,
'shipping_address' => [
'first_name' => '<string>',
'last_name' => '<string>',
'address_line1' => '<string>',
'city' => '<string>',
'postal_code' => '<string>',
'phone_number' => '<string>',
'address_line2' => '<string>',
'state' => '<string>',
'country' => 'US'
],
'idempotency_key' => '<string>',
'retailer_credentials_id' => '<string>',
'metadata' => [
],
'po_number' => '<string>',
'handling_days_max' => 2,
'is_gift' => false,
'gift_message' => '<string>',
'payment' => [
'mode' => 'wallet',
'payment_method' => '<string>',
'customer' => '<string>',
'margin' => [
'value' => 1
]
],
'customer_notifications' => [
'email' => 'jsmith@example.com'
],
'fulfillment' => [
'gift' => 'best_effort',
'items' => 'best_effort',
'quantity' => 'best_effort',
'excluded_merchants' => [
'<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.zinc.com/orders"
payload := strings.NewReader("{\n \"products\": [\n {\n \"url\": \"https://www.amazon.com/dp/B07JGBW826\",\n \"quantity\": 1,\n \"variant\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"condition_in\": [],\n \"condition_not_in\": []\n }\n ],\n \"max_price\": 1,\n \"shipping_address\": {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address_line1\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"address_line2\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"US\"\n },\n \"idempotency_key\": \"<string>\",\n \"retailer_credentials_id\": \"<string>\",\n \"metadata\": {},\n \"po_number\": \"<string>\",\n \"handling_days_max\": 2,\n \"is_gift\": false,\n \"gift_message\": \"<string>\",\n \"payment\": {\n \"mode\": \"wallet\",\n \"payment_method\": \"<string>\",\n \"customer\": \"<string>\",\n \"margin\": {\n \"value\": 1\n }\n },\n \"customer_notifications\": {\n \"email\": \"jsmith@example.com\"\n },\n \"fulfillment\": {\n \"gift\": \"best_effort\",\n \"items\": \"best_effort\",\n \"quantity\": \"best_effort\",\n \"excluded_merchants\": [\n \"<string>\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.post("https://api.zinc.com/orders")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n {\n \"url\": \"https://www.amazon.com/dp/B07JGBW826\",\n \"quantity\": 1,\n \"variant\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"condition_in\": [],\n \"condition_not_in\": []\n }\n ],\n \"max_price\": 1,\n \"shipping_address\": {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address_line1\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"address_line2\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"US\"\n },\n \"idempotency_key\": \"<string>\",\n \"retailer_credentials_id\": \"<string>\",\n \"metadata\": {},\n \"po_number\": \"<string>\",\n \"handling_days_max\": 2,\n \"is_gift\": false,\n \"gift_message\": \"<string>\",\n \"payment\": {\n \"mode\": \"wallet\",\n \"payment_method\": \"<string>\",\n \"customer\": \"<string>\",\n \"margin\": {\n \"value\": 1\n }\n },\n \"customer_notifications\": {\n \"email\": \"jsmith@example.com\"\n },\n \"fulfillment\": {\n \"gift\": \"best_effort\",\n \"items\": \"best_effort\",\n \"quantity\": \"best_effort\",\n \"excluded_merchants\": [\n \"<string>\"\n ]\n }\n}")
.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::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"products\": [\n {\n \"url\": \"https://www.amazon.com/dp/B07JGBW826\",\n \"quantity\": 1,\n \"variant\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"condition_in\": [],\n \"condition_not_in\": []\n }\n ],\n \"max_price\": 1,\n \"shipping_address\": {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address_line1\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"address_line2\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"US\"\n },\n \"idempotency_key\": \"<string>\",\n \"retailer_credentials_id\": \"<string>\",\n \"metadata\": {},\n \"po_number\": \"<string>\",\n \"handling_days_max\": 2,\n \"is_gift\": false,\n \"gift_message\": \"<string>\",\n \"payment\": {\n \"mode\": \"wallet\",\n \"payment_method\": \"<string>\",\n \"customer\": \"<string>\",\n \"margin\": {\n \"value\": 1\n }\n },\n \"customer_notifications\": {\n \"email\": \"jsmith@example.com\"\n },\n \"fulfillment\": {\n \"gift\": \"best_effort\",\n \"items\": \"best_effort\",\n \"quantity\": \"best_effort\",\n \"excluded_merchants\": [\n \"<string>\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"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": []
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create Order
Place a purchase order on Amazon, Walmart, and other retailers via the Zinc API.
curl --request POST \
--url https://api.zinc.com/orders \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"products": [
{
"url": "https://www.amazon.com/dp/B07JGBW826",
"quantity": 1,
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [],
"condition_not_in": []
}
],
"max_price": 1,
"shipping_address": {
"first_name": "<string>",
"last_name": "<string>",
"address_line1": "<string>",
"city": "<string>",
"postal_code": "<string>",
"phone_number": "<string>",
"address_line2": "<string>",
"state": "<string>",
"country": "US"
},
"idempotency_key": "<string>",
"retailer_credentials_id": "<string>",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 2,
"is_gift": false,
"gift_message": "<string>",
"payment": {
"mode": "wallet",
"payment_method": "<string>",
"customer": "<string>",
"margin": {
"value": 1
}
},
"customer_notifications": {
"email": "jsmith@example.com"
},
"fulfillment": {
"gift": "best_effort",
"items": "best_effort",
"quantity": "best_effort",
"excluded_merchants": [
"<string>"
]
}
}
'import requests
url = "https://api.zinc.com/orders"
payload = {
"products": [
{
"url": "https://www.amazon.com/dp/B07JGBW826",
"quantity": 1,
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [],
"condition_not_in": []
}
],
"max_price": 1,
"shipping_address": {
"first_name": "<string>",
"last_name": "<string>",
"address_line1": "<string>",
"city": "<string>",
"postal_code": "<string>",
"phone_number": "<string>",
"address_line2": "<string>",
"state": "<string>",
"country": "US"
},
"idempotency_key": "<string>",
"retailer_credentials_id": "<string>",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 2,
"is_gift": False,
"gift_message": "<string>",
"payment": {
"mode": "wallet",
"payment_method": "<string>",
"customer": "<string>",
"margin": { "value": 1 }
},
"customer_notifications": { "email": "jsmith@example.com" },
"fulfillment": {
"gift": "best_effort",
"items": "best_effort",
"quantity": "best_effort",
"excluded_merchants": ["<string>"]
}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
products: [
{
url: 'https://www.amazon.com/dp/B07JGBW826',
quantity: 1,
variant: [{label: '<string>', value: '<string>'}],
condition_in: [],
condition_not_in: []
}
],
max_price: 1,
shipping_address: {
first_name: '<string>',
last_name: '<string>',
address_line1: '<string>',
city: '<string>',
postal_code: '<string>',
phone_number: '<string>',
address_line2: '<string>',
state: '<string>',
country: 'US'
},
idempotency_key: '<string>',
retailer_credentials_id: '<string>',
metadata: {},
po_number: '<string>',
handling_days_max: 2,
is_gift: false,
gift_message: '<string>',
payment: {
mode: 'wallet',
payment_method: '<string>',
customer: '<string>',
margin: {value: 1}
},
customer_notifications: {email: 'jsmith@example.com'},
fulfillment: {
gift: 'best_effort',
items: 'best_effort',
quantity: 'best_effort',
excluded_merchants: ['<string>']
}
})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'products' => [
[
'url' => 'https://www.amazon.com/dp/B07JGBW826',
'quantity' => 1,
'variant' => [
[
'label' => '<string>',
'value' => '<string>'
]
],
'condition_in' => [
],
'condition_not_in' => [
]
]
],
'max_price' => 1,
'shipping_address' => [
'first_name' => '<string>',
'last_name' => '<string>',
'address_line1' => '<string>',
'city' => '<string>',
'postal_code' => '<string>',
'phone_number' => '<string>',
'address_line2' => '<string>',
'state' => '<string>',
'country' => 'US'
],
'idempotency_key' => '<string>',
'retailer_credentials_id' => '<string>',
'metadata' => [
],
'po_number' => '<string>',
'handling_days_max' => 2,
'is_gift' => false,
'gift_message' => '<string>',
'payment' => [
'mode' => 'wallet',
'payment_method' => '<string>',
'customer' => '<string>',
'margin' => [
'value' => 1
]
],
'customer_notifications' => [
'email' => 'jsmith@example.com'
],
'fulfillment' => [
'gift' => 'best_effort',
'items' => 'best_effort',
'quantity' => 'best_effort',
'excluded_merchants' => [
'<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.zinc.com/orders"
payload := strings.NewReader("{\n \"products\": [\n {\n \"url\": \"https://www.amazon.com/dp/B07JGBW826\",\n \"quantity\": 1,\n \"variant\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"condition_in\": [],\n \"condition_not_in\": []\n }\n ],\n \"max_price\": 1,\n \"shipping_address\": {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address_line1\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"address_line2\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"US\"\n },\n \"idempotency_key\": \"<string>\",\n \"retailer_credentials_id\": \"<string>\",\n \"metadata\": {},\n \"po_number\": \"<string>\",\n \"handling_days_max\": 2,\n \"is_gift\": false,\n \"gift_message\": \"<string>\",\n \"payment\": {\n \"mode\": \"wallet\",\n \"payment_method\": \"<string>\",\n \"customer\": \"<string>\",\n \"margin\": {\n \"value\": 1\n }\n },\n \"customer_notifications\": {\n \"email\": \"jsmith@example.com\"\n },\n \"fulfillment\": {\n \"gift\": \"best_effort\",\n \"items\": \"best_effort\",\n \"quantity\": \"best_effort\",\n \"excluded_merchants\": [\n \"<string>\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.post("https://api.zinc.com/orders")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n {\n \"url\": \"https://www.amazon.com/dp/B07JGBW826\",\n \"quantity\": 1,\n \"variant\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"condition_in\": [],\n \"condition_not_in\": []\n }\n ],\n \"max_price\": 1,\n \"shipping_address\": {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address_line1\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"address_line2\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"US\"\n },\n \"idempotency_key\": \"<string>\",\n \"retailer_credentials_id\": \"<string>\",\n \"metadata\": {},\n \"po_number\": \"<string>\",\n \"handling_days_max\": 2,\n \"is_gift\": false,\n \"gift_message\": \"<string>\",\n \"payment\": {\n \"mode\": \"wallet\",\n \"payment_method\": \"<string>\",\n \"customer\": \"<string>\",\n \"margin\": {\n \"value\": 1\n }\n },\n \"customer_notifications\": {\n \"email\": \"jsmith@example.com\"\n },\n \"fulfillment\": {\n \"gift\": \"best_effort\",\n \"items\": \"best_effort\",\n \"quantity\": \"best_effort\",\n \"excluded_merchants\": [\n \"<string>\"\n ]\n }\n}")
.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::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"products\": [\n {\n \"url\": \"https://www.amazon.com/dp/B07JGBW826\",\n \"quantity\": 1,\n \"variant\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"condition_in\": [],\n \"condition_not_in\": []\n }\n ],\n \"max_price\": 1,\n \"shipping_address\": {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address_line1\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"address_line2\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"US\"\n },\n \"idempotency_key\": \"<string>\",\n \"retailer_credentials_id\": \"<string>\",\n \"metadata\": {},\n \"po_number\": \"<string>\",\n \"handling_days_max\": 2,\n \"is_gift\": false,\n \"gift_message\": \"<string>\",\n \"payment\": {\n \"mode\": \"wallet\",\n \"payment_method\": \"<string>\",\n \"customer\": \"<string>\",\n \"margin\": {\n \"value\": 1\n }\n },\n \"customer_notifications\": {\n \"email\": \"jsmith@example.com\"\n },\n \"fulfillment\": {\n \"gift\": \"best_effort\",\n \"items\": \"best_effort\",\n \"quantity\": \"best_effort\",\n \"excluded_merchants\": [\n \"<string>\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"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": []
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Request Flow
- Submit Order - Send order details including products and shipping address
- Validation - We validate product URLs and shipping address
- Queued - Order is queued for processing
- Processing - Our system places the order with the retailer
- Completed - You receive confirmation with tracking details

Order processing flow
Product URLs
Provide direct product URLs. Zinc resolves the retailer from the URL itself, and will attempt checkout at most online stores — not only the ones in the retailer catalog. That catalog is the set Zinc verifies with daily test orders, not the limit of what it can buy from: a store missing from it is not unsupported. Each product must include:- url - Direct link to the product page
GET /retailers/check answers whether Zinc will order from that store and ship it to a given country, before you submit. It applies the same gates as this endpoint, so the two cannot disagree.422 / validation_error — Order cannot contain more than 10 items. The limit
is on entries in the products array, not units: one entry with quantity: 50
still counts as one. See
The Products Array.- quantity - Number of items to order (integer, default 1)
- variant - A list of label, value pairs indicating a variant of a product.
For example, if you’re ordering a shirt. The shirt may come in different colors and different sizes.
To indicate a red medium shirt, you would do:
[ { "label": "Color", "value": "Red" }, { "label": "Size", "value": "Medium" } ]Make sure the strings used for both the label and value match up to what is present on the retailer website. For example, if amediumis indicated by the valueM, useMfor the value. - condition_in / condition_not_in - Condition allow/deny lists. Limit which offers are eligible by item condition — useful for buying only new items, or for accepting used items down to a floor. See Condition Filtering.
Products Zinc cannot buy
Some items can’t be purchased through Zinc no matter which account places the order. They fail withproduct_unavailable at checkout rather than being rejected when you
submit, so filter them out of your catalog up front:
- Digital goods — e-books, downloads, digital video
- Gift cards, including e-gift cards
- Customized or personalized items — anything configured on the product page
- Retailer-assembled bundles
- Groceries — Amazon Fresh and Whole Foods
- Pharmacy items
- Services — installation, at-home service, and similar add-ons
- Magazine subscriptions
- Restricted items — anything the retailer prohibits from automated purchase
product_unavailable. See
Retailer Accounts if you’re placing orders on your own account.Shipping Address
All orders require a valid shipping address. Addresses are validated using Google’s Address Validation API. Required fields:first_nameandlast_nameaddress_line1(useaddress_line2for apartment/suite, optional)citypostal_code— for a US address this must be a ZIP: five digits, optionally+4(98632or27517-8761)phone_number
state— omit for countries that don’t use states/provincescountry— ISO 3166-1 alpha-2 code (e.g.US,CA,GB,DE); defaults toUS
country as an ISO 3166-1 alpha-2 code; state is optional where it doesn’t apply.Which account places the order
By default Zinc places the order on its own accounts and you pay for the item out of your wallet. To have it placed on your own retailer account instead, pass that account’sshort_id as retailer_credentials_id — orders on your own account are charged the API
fee only. Zinc never selects one of your saved accounts for you, so send the field on
every order that needs it. See Retailer Accounts.
Payment
By default, orders draw from your prepaid wallet — nopayment object needed. To charge your end-customer’s card instead and keep a margin, send a payment object with mode: "connect". See the Stripe Connect guide for the full flow.
| Field | Required | Description |
|---|---|---|
mode | "wallet" (default) or "connect". | |
payment_method | connect | Your end-customer’s saved payment-method id on your connected account. |
customer | connect | Your end-customer’s Stripe Customer id (cus_…) on your connected account. |
margin | connect | Your markup: { "type": "flat", "value": <cents> } or { "type": "percent", "value": <percent> }. |
max_price, and the card is charged the actual total when Zinc places the order with the retailer.
Connect mode
{
"payment": {
"mode": "connect",
"payment_method": "pm_1ExampleCard",
"customer": "cus_ExampleEndCustomer",
"margin": { "type": "flat", "value": 250 }
}
}
Fulfillment preferences
An order is strict by default: if any rule can’t be met — an item can’t be bought, the retailer caps the quantity, the gift option isn’t offered — the whole order fails and nothing ships. The optionalfulfillment object relaxes that one concern at a time. Each key
takes the mode to hold that rule at, and the only mode today is "best_effort".
Anything you leave out stays strict, so an omitted fulfillment block and an
empty one mean exactly the same strict order.
| Concern | With "best_effort" | Strict failure it replaces |
|---|---|---|
items | An item that can’t be bought is skipped and the rest ship. That item’s status becomes skipped. | product_not_found, product_out_of_stock, product_variant_unavailable, add_to_cart_failed |
quantity | If the retailer caps an item below the quantity you asked for, buy the cap. | quantity_limit_exceeded |
gift | If the retailer offers no free gift option, place a normal order instead. Requires is_gift: true. | gift_option_unavailable |
{
"fulfillment": {
"items": "best_effort",
"quantity": "best_effort"
}
}
max_price is never relaxed. No fulfillment setting will let an order exceed the
ceiling you set.- An empty cart still fails. If every item ends up skipped, the order fails
with
cart_emptyrather than placing an order for nothing. - Unknown keys and unknown modes are rejected, not ignored. A typo like
"itmes"or"best-effort"returns a422, so a mistake can never quietly leave a rule strict when you meant to relax it.
fulfillment.concessions on
the order, so a placed order always tells you what it did — see
Fulfillment.
fulfillment is also accepted on POST /agent/orders, which shares the same order-creation schema.Excluding merchants
fulfillment.excluded_merchants goes the other way: it makes an order stricter. List up to 20 merchants the order must never be bought from. Each entry is either a seller’s display name as shown on the retailer’s storefront, or an Amazon Business merchant id (amzn1.…). Names are matched ignoring case and spacing.
{
"fulfillment": {
"excluded_merchants": ["Acme Resellers", "amzn1.pa.o.EXAMPLE"]
}
}
fulfillment.excluded_merchants.
excluded_merchants currently applies to Amazon Business orders only and is ignored for other retailers.Optional Order Data
You can include additional data with your order for tracking and reference purposes. This data will be used by our system as input to any fields during checkout that match.- po_number - Your internal purchase order number for tracking and reconciliation
- is_gift - Mark the order as a gift (boolean, default
false), suppressing prices on the packing slip. See Gift orders for the failure behavior when a retailer offers no gift option. - gift_message - Optional note for the recipient, entered into the retailer’s
gift-message field at checkout (string, max 240 characters). Requires
is_giftto betrue. - handling_days_max - Optional ceiling on a seller’s handling days (integer,
minimum
1). Offers from sellers whose handling time exceeds this are skipped. Omit or sendnullfor no limit.
metadata field instead.Gift orders
Settingis_gift: true suppresses prices on the packing slip. Because a gift that
arrives with prices visible to the recipient is worse than no order at all, this is
treated as a hard requirement rather than a preference:
gift_option_unavailable instead of being placed as a normal order. Handle this
error type if you offer gifting as an optional add-on — see
Order Processing Errors.fulfillment: { "gift": "best_effort" }
and a retailer with no gift option gets a normal order rather than none. See
Fulfillment preferences.
gift_message is best-effort by contrast: it’s delivered where the retailer’s
checkout offers a gift-message field, and the order is still placed without it
where one isn’t available.
{
"is_gift": true,
"gift_message": "Happy birthday! Hope you enjoy it."
}
is_gift and gift_message are also accepted on POST /agent/orders, which shares the same order-creation schema.Response
A successful order creation returns:- id - Unique order identifier (UUID)
- status - Current order status (initially “pending”)
- items - Array of order items with their details
- shipping_address - Confirmed shipping address
- created_at - Timestamp of order creation
id to retrieve order status and updates.Authorizations
Zinc API key (Bearer zn_...)
Headers
Body
Request body for POST /orders.
Show child attributes
Show child attributes
Maximum price (in cents) allowed for an order before it is finalized.
x >= 0Where to ship. Required for wallet and Connect orders.
Show child attributes
Show child attributes
Optional idempotency key to prevent duplicate orders. If not provided, one will be generated.
36Optional short ID (e.g. 'zn_acct_XXXXXXXX') of one of your own saved retailer accounts to place this order on. The item is then paid for by the payment method saved on that account, and your wallet is charged the API fee only — so the balance needed to place the order is the fee, not max_price + fee. Omit it and the order is placed on a Zinc account and funded from your wallet; Zinc never substitutes one of your saved accounts, so send this field on every order that has to run on yours.
Optional metadata to attach to the order. Can contain arbitrary key-value pairs.
Optional purchase order number for the order.
Optional ceiling on a seller's shipping and handling days. Omit or send null for no limit.
x >= 1Mark the order as a gift, suppressing prices on the packing slip. If the retailer's checkout offers no free gift option, the order FAILS with gift_option_unavailable rather than being placed as a normal order — a gift that arrives with prices visible to the recipient is treated as worse than no order.
Optional note for the recipient, entered into the retailer's gift-message field at checkout. Requires is_gift to be true. Max 240 characters. Delivered where the retailer's checkout offers a gift message; the order is still placed without it where one isn't available.
240Optional payment block. Omit for prepaid-wallet billing (default).
Show child attributes
Show child attributes
Opt in to emailing the end customer order updates (and unlock the public tracking page for this order). Adds a per-order surcharge. Omit for no customer notifications (default).
Show child attributes
Show child attributes
Loosen the order's strict-by-default rules. Omit for today's behaviour: any rule that can't be met fails the order. Set a rule (gift, items, quantity) to best_effort to have the order placed anyway; anything left unset stays strict. Whatever was relaxed is reported back in fulfillment.concessions on the order. max_price is never relaxed. excluded_merchants tightens instead: merchants this order must not be bought from.
Show child attributes
Show child attributes
Response
Successful Response
Response model for order data.
pending, in_progress, order_placed, order_failed, cancelled, cancelled_by_retailer Show child attributes
Show child attributes
Fulfillment result and price breakdown for a completed or failed order; null while processing.
Show child attributes
Show child attributes
The retailer's own order number(s) for this order (e.g. an Amazon 113-… ID), as recorded when it was placed. Empty while processing, or if the order never reached the retailer.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Stripe Connect charge details when this order was paid via Connect; null for prepaid-wallet orders.
Show child attributes
Show child attributes
Card hold details when this order was paid by card outside the wallet and Connect; null for wallet and Connect orders.
Show child attributes
Show child attributes
End-customer email-notification status when the order opted into the notifications add-on; null when it didn't.
Show child attributes
Show child attributes
gift/items/quantity: the mode this order asked for on each rule (all null = strict). concessions: every rule that actually was relaxed, with the worker's code and the item it concerned. Empty concessions means the order was fulfilled exactly as requested.
Show child attributes
Show child attributes

