Skip to content

Update a booking

PUT /api/bookings/v4/{id}

Updates an existing booking with new sender, receiver, or item details. This is typically used after creating a booking to add full address information before confirming.

ParameterTypeRequiredDescription
idintegerYesThe unique booking ID.

You only need to include the fields you want to update. All fields are optional.

FieldTypeDescription
declared_valuestringDeclared value of the goods in AUD.
tailgate_pickupbooleanWhether a tailgate is required at pickup.
tailgate_deliverybooleanWhether a tailgate is required at delivery.
itemsarrayItem objects to add or update. Entries with an id update that existing line; entries without id create new lines. Omitted existing items are kept — this is not a full replace.
senderobjectUpdated sender details.
receiverobjectUpdated receiver details.
FieldTypeDescription
namestringContact name.
company_namestringCompany or business name.
emailstringContact email address.
phonestringContact phone number.
addressstringStreet address.
postcodestringPostcode.
suburbstringSuburb name in uppercase.
statestringState or territory abbreviation (e.g. "NSW", "VIC").
typestringAddress type: "business" or "residential".
countrystringISO 3166-1 alpha-2 country code. Defaults to "AU".
FieldTypeDescription
idintegerExisting item id to update. Omit to create a new item.
weightstringWeight in kilograms.
heightstringHeight in centimetres.
widthstringWidth in centimetres.
lengthstringLength in centimetres.
quantityintegerNumber of identical items.
descriptionstringRequired packaging type from the allowed list (e.g. "Carton", "Satchel", "Pallet"). Free-text product names such as "Electronics" are rejected. See items and packaging.
Terminal window
curl -X PUT \
-H "Api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender": {
"name": "John Smith",
"company_name": "Example Pty Ltd",
"email": "john@example.com",
"phone": "0400000000",
"address": "123 George Street",
"postcode": "2000",
"suburb": "SYDNEY",
"state": "NSW",
"type": "business",
"country": "AU"
},
"receiver": {
"name": "Jane Doe",
"company_name": "Receiver Co",
"email": "jane@example.com",
"phone": "0400000001",
"address": "456 Collins Street",
"postcode": "3000",
"suburb": "MELBOURNE",
"state": "VIC",
"type": "business",
"country": "AU"
}
}' \
https://www.transdirect.com.au/api/bookings/v4/12345678

The response returns the full updated booking object:

{
"id": 12345678,
"status": "new",
"declared_value": "1000.00",
"tailgate_pickup": false,
"tailgate_delivery": false,
"sender": {
"name": "John Smith",
"company_name": "Example Pty Ltd",
"email": "john@example.com",
"phone": "0400000000",
"address": "123 George Street",
"postcode": "2000",
"suburb": "SYDNEY",
"state": "NSW",
"type": "business",
"country": "AU"
},
"receiver": {
"name": "Jane Doe",
"company_name": "Receiver Co",
"email": "jane@example.com",
"phone": "0400000001",
"address": "456 Collins Street",
"postcode": "3000",
"suburb": "MELBOURNE",
"state": "VIC",
"type": "business",
"country": "AU"
},
"items": [
{
"weight": 5,
"height": 25,
"width": 35,
"length": 40,
"quantity": 1,
"description": "carton"
}
]
}
Status codeDescription
400Bad request — invalid field values.
401Unauthorised — invalid or missing credentials.
404Not found — no booking exists with the given ID, or it belongs to another member.
422Unprocessable entity — the booking has already been paid and cannot be updated.