Skip to main content
GET
/
orders
/
{order_id}
/
timeline
Get Order Timeline
curl --request GET \
  --url https://api.zinc.com/orders/{order_id}/timeline \
  --header 'Authorization: <api-key>'
import requests

url = "https://api.zinc.com/orders/{order_id}/timeline"

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/{order_id}/timeline', 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/{order_id}/timeline",
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/{order_id}/timeline"

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/{order_id}/timeline")
.header("Authorization", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.zinc.com/orders/{order_id}/timeline")

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
{
  "order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "milestones": [
    {
      "label": "<string>",
      "occurred_at": "2023-11-07T05:31:56Z",
      "source": "<string>",
      "detail": {}
    }
  ]
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}
Retrieve the customer-facing lifecycle timeline for an order. The timeline merges the order’s placement outcome with carrier tracking state into an ordered list of milestones.
The timeline is derived from existing order and tracking data on every request, so it is available for all orders — including orders placed before this endpoint was introduced.

Authorizations

Authorization
string
header
required

Zinc API key (Bearer zn_...)

Headers

authorization
string | null

Path Parameters

order_id
string<uuid>
required

Response

Successful Response

Customer-facing lifecycle timeline for an order.

Derived on read by merging placement logs (OrderLog) with carrier tracking state (TrackingNumber / TrackingCheckpoint). No dedicated storage — works retroactively on every historical order.

order_id
string<uuid>
required
current_status
enum<string>
required
Available options:
pending,
in_progress,
order_placed,
order_failed,
cancelled,
cancelled_by_retailer
milestones
OrderMilestone · object[]
required