curl --request GET \
--url https://catchbackcards.com/api/partner/v1/shipments/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://catchbackcards.com/api/partner/v1/shipments/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://catchbackcards.com/api/partner/v1/shipments/{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://catchbackcards.com/api/partner/v1/shipments/{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: Bearer <token>"
],
]);
$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://catchbackcards.com/api/partner/v1/shipments/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://catchbackcards.com/api/partner/v1/shipments/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://catchbackcards.com/api/partner/v1/shipments/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "7c1e0000-…",
"status": "shipped",
"card_ids": [
"0e94dc61-…"
],
"carrier": "USPS",
"service": "Priority Mail",
"service_token": "usps_priority",
"cost": 12.85,
"cover_amount": null,
"insurance_cost": 0,
"destination_country": "US",
"tracking_number": "9400100000000000000000",
"tracking_url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=9400100000000000000000",
"created_at": "2026-11-02T18:04:11.000Z",
"status_updated_at": "2026-11-03T16:20:00.000Z",
"shipped_at": "2026-11-03T16:20:00.000Z",
"expected_delivery": null,
"delivered_at": null,
"items": [
{
"card_id": "0e94dc61-…",
"name": "Charizard ex",
"grade": 10,
"grading_company": "PSA",
"value": 410
}
],
"address": {
"name": "Sam Rivera",
"address1": "1 Example Way",
"address2": null,
"city": "Testville",
"state": "CA",
"zip": "94000",
"country": "US",
"phone": null
}
}{
"error": "Missing or malformed API key"
}{
"error": "<string>",
"code": "FEATURE_RESTRICTED",
"capability": "<string>"
}{
"error": "Shipment not found"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Get a shipment
Scope: ship:cards, opt-in, granted on request (needs a linked account).
One shipment on your account, with its cards and the address it ships to. It always has the current status, so it’s the place to check after a shipment.updated event or a SHIPMENT_OUTCOME_UNKNOWN. We remove the address 90 days after a shipment closes, or 180 days after it shipped if the carrier never reported an end: how long we keep it.
curl --request GET \
--url https://catchbackcards.com/api/partner/v1/shipments/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://catchbackcards.com/api/partner/v1/shipments/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://catchbackcards.com/api/partner/v1/shipments/{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://catchbackcards.com/api/partner/v1/shipments/{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: Bearer <token>"
],
]);
$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://catchbackcards.com/api/partner/v1/shipments/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://catchbackcards.com/api/partner/v1/shipments/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://catchbackcards.com/api/partner/v1/shipments/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "7c1e0000-…",
"status": "shipped",
"card_ids": [
"0e94dc61-…"
],
"carrier": "USPS",
"service": "Priority Mail",
"service_token": "usps_priority",
"cost": 12.85,
"cover_amount": null,
"insurance_cost": 0,
"destination_country": "US",
"tracking_number": "9400100000000000000000",
"tracking_url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=9400100000000000000000",
"created_at": "2026-11-02T18:04:11.000Z",
"status_updated_at": "2026-11-03T16:20:00.000Z",
"shipped_at": "2026-11-03T16:20:00.000Z",
"expected_delivery": null,
"delivered_at": null,
"items": [
{
"card_id": "0e94dc61-…",
"name": "Charizard ex",
"grade": 10,
"grading_company": "PSA",
"value": 410
}
],
"address": {
"name": "Sam Rivera",
"address1": "1 Example Way",
"address2": null,
"city": "Testville",
"state": "CA",
"zip": "94000",
"country": "US",
"phone": null
}
}{
"error": "Missing or malformed API key"
}{
"error": "<string>",
"code": "FEATURE_RESTRICTED",
"capability": "<string>"
}{
"error": "Shipment not found"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
Your API key, sent as a bearer token. Keep it on your server. See Authentication. A request from a location we refuse gets a 403 with Access denied, whether or not it has a valid key: where you can call from.
Path Parameters
The id Create a shipment returned, or the shipment_id in an error.
Response
The shipment.
A shipment as a webhook sends it. It has nothing from the customer's address.
The shipment's id. Get a shipment takes it.
pending: the shipment hasn't reached an order yet.needs_review: we couldn't confirm the charge, and it's with our team.processing: the order is queued for fulfillment.shipped,delivered: the carrier has it, or has delivered it.cancelled: the order was cancelled or resolved outside shipping.
pending, needs_review, processing, shipped, delivered, cancelled null until we've confirmed a rate.
What the shipment charges in USD, including any insurance premium. null until we've confirmed a rate.
The insurance on this shipment, in USD. null without insurance, and before the order exists.
The premium in USD, which is part of cost. 0 without insurance, and null before the order exists.
null until there's a label.
When the order's status last changed.
The cards in the shipment. Empty until the order exists.
Show child attributes
Show child attributes
Where it ships to. null until the order exists, and after we've removed the address.
Show child attributes
Show child attributes
Present and true while status is needs_review.
Present and true once we've removed the address.

