const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thanks.io/api/v2/orders/{orderId}/items', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.thanks.io/api/v2/orders/{orderId}/items \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.thanks.io/api/v2/orders/{orderId}/items"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": 2668662,
"status": "In Transit",
"delivery_date": null,
"scans": 0,
"failure": null,
"recipient": {
"name": "Tobias Example",
"company": "thanks.io",
"address": "12345 Main Street",
"address2": "Apartment 1",
"city": "Any Town",
"province": "KS",
"postal_code": "12345",
"country": "US",
"email": "tobias@example.com",
"phone": "5555555555",
"custom1": "Unique Info",
"custom2": "For example a product code or customer ID",
"custom3": "",
"custom4": "",
"custom5": "",
"custom6": "",
"custom7": "",
"custom8": "",
"custom9": "",
"custom10": ""
},
"created_at": "2025-09-08T16:05:12.000000Z"
},
{
"id": 2668663,
"status": "Delivered",
"delivery_date": "2025-09-15",
"scans": 2,
"failure": null,
"recipient": {
"name": "Current Resident",
"company": null,
"address": "1 Main Street",
"address2": "",
"city": "Fake City",
"province": "FC",
"postal_code": "12345",
"country": "US",
"email": null,
"phone": null,
"custom1": null,
"custom2": null,
"custom3": null,
"custom4": null,
"custom5": null,
"custom6": null,
"custom7": null,
"custom8": null,
"custom9": null,
"custom10": null
},
"created_at": "2025-09-08T16:05:12.000000Z"
}
],
"links": {
"first": "https://api.thanks.io/api/v2/orders/42708/items?page=1",
"last": "https://api.thanks.io/api/v2/orders/42708/items?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.thanks.io/api/v2/orders/42708/items",
"per_page": 50,
"to": 2,
"total": 2
}
}{
"status": "failed",
"errors": [
"Unauthorized"
]
}{
"message": "Not Found"
}{
"errors": {
"per_page": [
"The per page field must be between 1 and 100."
]
}
}List Order Items
Return the individual mail pieces that make up an order, one entry per recipient, with that piece’s delivery status, delivery date, QR scan count, failure reason and recipient address. Use this when you need per-piece detail; Track Order returns the same order as aggregate counts instead.
Results are paginated and ordered by item ID, ascending. The order must belong to the authenticated account.
For gift card orders each item also carries the gift card’s brand and amount.
The recipient’s ten custom fields come back alongside the address, so the data you merged into the piece is available with it. Message content, creative and preview images, and per-item pricing are not part of this response; read those from the order itself.
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thanks.io/api/v2/orders/{orderId}/items', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.thanks.io/api/v2/orders/{orderId}/items \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.thanks.io/api/v2/orders/{orderId}/items"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": 2668662,
"status": "In Transit",
"delivery_date": null,
"scans": 0,
"failure": null,
"recipient": {
"name": "Tobias Example",
"company": "thanks.io",
"address": "12345 Main Street",
"address2": "Apartment 1",
"city": "Any Town",
"province": "KS",
"postal_code": "12345",
"country": "US",
"email": "tobias@example.com",
"phone": "5555555555",
"custom1": "Unique Info",
"custom2": "For example a product code or customer ID",
"custom3": "",
"custom4": "",
"custom5": "",
"custom6": "",
"custom7": "",
"custom8": "",
"custom9": "",
"custom10": ""
},
"created_at": "2025-09-08T16:05:12.000000Z"
},
{
"id": 2668663,
"status": "Delivered",
"delivery_date": "2025-09-15",
"scans": 2,
"failure": null,
"recipient": {
"name": "Current Resident",
"company": null,
"address": "1 Main Street",
"address2": "",
"city": "Fake City",
"province": "FC",
"postal_code": "12345",
"country": "US",
"email": null,
"phone": null,
"custom1": null,
"custom2": null,
"custom3": null,
"custom4": null,
"custom5": null,
"custom6": null,
"custom7": null,
"custom8": null,
"custom9": null,
"custom10": null
},
"created_at": "2025-09-08T16:05:12.000000Z"
}
],
"links": {
"first": "https://api.thanks.io/api/v2/orders/42708/items?page=1",
"last": "https://api.thanks.io/api/v2/orders/42708/items?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.thanks.io/api/v2/orders/42708/items",
"per_page": 50,
"to": 2,
"total": 2
}
}{
"status": "failed",
"errors": [
"Unauthorized"
]
}{
"message": "Not Found"
}{
"errors": {
"per_page": [
"The per page field must be between 1 and 100."
]
}
}Authorizations
Bearer token authentication using your thanks.io API key
Path Parameters
ID of the order whose items you want to list.
Query Parameters
Number of items to return per page. Must be between 1 and 100.
1 <= x <= 100Page of results to return.
x >= 1Was this page helpful?