Skip to content

List bookings

List the bookings on your account. Draft quotes (status new) are not included.

GET /api/v5/bookings

Requires your API key in the api-key header.

ParameterTypeDescription
sincestringOnly return bookings created at or after this time. Any ISO 8601 date or date-time, for example 2026-10-01 or 2026-10-01T00:00:00+10:00.
sortstringColumn to sort by. Prefix with - for descending. One of id, booking_time, paid_date, status, cost, charged_weight, scanned_weight, connote, courier, pickup_date, pickup_time. Default: -booking_time (newest first).

The response holds at most 100 bookings and there is no page parameter. To read more than 100, sort oldest first (sort=booking_time) with a since, then send the next request with since set to the created_at of the last booking you received. since is inclusive, so skip ids you already have. This is a capped list, not guaranteed pagination: if more than 100 bookings share the same created_at, advancing since cannot get past them.

Terminal window
curl "https://api.transdirect.com.au/api/v5/bookings?since=2026-10-01&sort=-booking_time" \
-H "api-key: $TD_API_KEY"
import { client, getApiV5Bookings } from '@transdirect/api-sdk';
client.setConfig({ headers: { 'api-key': process.env.TD_API_KEY! } });
const { data: bookings, response } = await getApiV5Bookings({
query: { since: '2026-10-01', sort: '-booking_time' },
});
if (response.status === 404) {
console.log('No bookings in this window');
} else {
for (const booking of bookings ?? []) {
console.log(booking.id, booking.status_code, booking.connote);
}
}

200 OK with an array of bookings. Each element has the same shape as get a booking.

[
{
"id": 623630,
"booked_at": "2026-10-16T04:13:34.000Z",
"booked_by": "sender",
"created_at": "2026-10-16T04:13:34.000Z",
"declared_value": 0,
"insured_value": 0,
"description": "Books",
"items": [
{ "id": 46885332, "description": "Carton", "weight": 5, "length": 40, "width": 30, "height": 20, "quantity": 1 }
],
"label": "/api/v5/bookings/623630/label",
"notifications": { "email": false, "sms": false },
"receiver": {
"id": 69194890,
"address": "200 Collins Street",
"company_name": "",
"email": "jordan@example.com",
"name": "Jordan Lee",
"postcode": "3000",
"phone": "0398765432",
"state": "VIC",
"suburb": "MELBOURNE",
"type": "residential",
"country": "AU"
},
"sender": {
"id": 69194889,
"address": "1 Martin Place",
"company_name": "Example Books Pty Ltd",
"email": "dispatch@example.com",
"name": "Sam Taylor",
"postcode": "2000",
"phone": "0291234567",
"state": "NSW",
"suburb": "SYDNEY",
"type": "business",
"country": "AU"
},
"pickup_window": ["2026-10-19T09:00:00.000Z", "2026-10-19T16:00:00.000Z"],
"connote": "CPBV00123456789",
"charged_weight": 6,
"scanned_weight": 0,
"special_instructions": "",
"status": "Confirmed",
"status_code": "confirmed",
"is_paid": true,
"updated_at": "2026-10-16T04:20:11.000Z",
"pickup_instructions": "",
"tailgate_pickup": false,
"tailgate_delivery": false,
"courier": "couriers_please",
"cost": 28.43,
"additional_charges": 0,
"customer_reference": "ORDER-1042"
}
]

Every 200 response carries an ETag, a Last-Modified header and Cache-Control: private, max-age=30. Send the ETag back in If-None-Match on your next poll: when nothing in the list has changed you get 304 Not Modified with no body.

Terminal window
curl "https://api.transdirect.com.au/api/v5/bookings?since=2026-10-01" \
-H "api-key: $TD_API_KEY" \
-H 'If-None-Match: W/"5d41402abc4b2a76b9719d911017c592"'

This makes the list a cheap way to watch for status, connote and cost changes across many bookings at once.

StatusBodyCause
304EmptyYour If-None-Match matches the current list.
400{"error":"invalid_since"}since is not a date.
400{"error":"invalid_sort"}sort names a column that is not in the list above.
401{"error":"missing_api_key"} or {"error":"invalid_api_key"}No key, or a key that is not active.
404EmptyNo bookings match. This is not an error in your request: treat it as an empty list.
429{"error":"rate_limited"}More than 600 requests a minute on this key. Wait for the retry-after seconds.

Open the API Explorer, add your key, and find List bookings.