Skip to content

Get a booking

Fetch a single booking you own, whether it is still a draft quote or has been confirmed.

GET /api/v5/bookings/{id}

Requires your API key in the api-key header. You can only read bookings that belong to your account.

ParameterTypeDescription
idintegerThe Transdirect booking id returned when you created the quote. Not your order number or the courier connote.
Terminal window
curl https://api.transdirect.com.au/api/v5/bookings/623630 \
-H "api-key: $TD_API_KEY"
import { client, getApiV5BookingsById } from '@transdirect/api-sdk';
client.setConfig({ headers: { 'api-key': process.env.TD_API_KEY! } });
const { data: booking, error } = await getApiV5BookingsById({
path: { id: '623630' },
});
if (error) throw new Error(JSON.stringify(error));
if (booking.status_code === 'confirmed') {
console.log('Connote', booking.connote);
}

200 OK. This booking has been confirmed on Couriers Please.

{
"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"
}
FieldTypeDescription
idintegerTransdirect booking id.
status_codestringThe machine status, for example new, paid or confirmed. Switch on this field. See booking statuses.
statusstringA display label for the status, for example New, Paid or Pending Review. Two codes share Pending Review, so do not branch on it.
is_paidbooleantrue once a transaction is recorded on the booking (card, PayPal or credit account). A booking on Pay at end of day is true before its 9pm charge has settled.
courierstring or nullThe selected or confirmed courier, for example couriers_please. null when none has been selected.
costnumberAmount charged in AUD, including GST. Only present once the booking has moved past new.
additional_chargesnumberExtra charges added after booking, in AUD. Only present once the booking has moved past new.
connotestring or nullThe courier’s consignment number, once the courier has issued one.
labelstringRelative path of the label PDF. Prefix it with https://api.transdirect.com.au, or call get a label.
sender, receiverobject, or ""Address details. An empty string means the address is not set.
itemsarrayItem lines: package type in description, weight in kg, dimensions in cm.
descriptionstring or nullThe goods description: what is inside the parcels.
declared_valuenumberDeclared value in AUD, which sets the transit warranty cover. 0 means no cover.
customer_referencestring or nullYour own reference, as sent when you quoted or updated.
pickup_windowarrayPickup start and end, from the pickup date and time stored on the booking. The times are local pickup times, even though the strings end in Z. A draft shows a placeholder window until you confirm with a pickup date and time.
charged_weight, scanned_weightnumberWeight in kg the courier charges on (the greater of dead and cubic weight) and, if reported, the weight it scanned.
tailgate_pickup, tailgate_deliverybooleanWhether a tail-lift truck was requested.
special_instructions, pickup_instructionsstring or nullDelivery and pickup instructions.
orderobjectPresent when the booking came from an imported e-commerce order: order_id and order_number.
collection_pointobjectPresent when the parcel goes to a collection point.
created_at, booked_at, updated_atstringISO 8601 timestamps in UTC. booked_at currently repeats created_at.
notificationsobjectAlways {"email": false, "sms": false}.

A booking response never contains quotes or quote_errors. Those appear only in the response to the quote request that created the booking. To see prices again, quote again.

GET /api/v5/bookings/{id}/context

Returns the same booking body plus total_booking_count: the number of bookings on your account paid in the current week and the 11 weeks before it. SDK function: getApiV5BookingsByIdContext.

StatusBodyCause
400{"success":false,"error":{"name":"ZodError","message":"..."}} with “id must be a positive integer”The id is not a number, for example a placeholder such as [id] left in the URL.
401{"error":"missing_api_key"} or {"error":"invalid_api_key"}No key, or a key that is not active.
404{"error":"booking_not_found"}No booking with that id belongs to your account.
404{"error":"legacy_public_route_not_mounted","path":"..."}The path does not exist, for example a typo after the id.
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 Get a booking.