Creating a booking
POST /v1/booking/create books a journey with Addison Lee. There are four common ways
to call it:
- Against a quote — reference a
request_idfrom a previous price quote. - Directly, without a quote — send the full
locationsarray in the booking request itself. - Airport pick-ups and drop-offs — a direct booking where one stop is an airport and carries flight details.
- Courier delivery — a direct booking that carries a
contactat each stop instead of passengers.
All of them return the same body — the booking's job_uuid, job_number, and
booking_status.
Idempotency. Set
partner_reference.booking.idto a unique value from your own system. Quickbook creates only one booking per partner reference, so a retried request never results in a duplicate booking.
Against a quote
Pass the request_id and quote_id you received from the quote, the chosen service,
and a contact for the journey. You don't repeat the locations — they're taken from the
quote.
curl -X POST "$QB_BASE/v1/booking/create" \
-H "Authorization: $QB_AUTH" \
-H "Content-Type: application/json" \
-d '{
"request_id": "158aba9c-e8c8-42cc-ae79-b9324899ac94",
"payment_method": "Account",
"service": "standard_car",
"contact": {
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
},
"passengers": [
{
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
}
]
}'
Directly, without a quote
To book without quoting first, omit request_id/quote_id and supply the full
locations array (pick-up first, drop-off last). Provide the service, a booking
contact, and the passengers travelling. information and references are optional.
curl -X POST "$QB_BASE/v1/booking/create" \
-H "Authorization: $QB_AUTH" \
-H "Content-Type: application/json" \
-d '{
"payment_method": "Account",
"service": "standard_car",
"pickup_dt": "2026-07-20T09:00:00+01:00",
"locations": [
{
"source": "Address",
"street_address": "Barbican Centre, 10 Silk St",
"town": "London",
"postcode": "EC2Y 8DS",
"country": "GB",
"lat": 51.520024,
"long": -0.092447
},
{
"source": "Address",
"street_address": "189 Earlsfield Road",
"town": "London",
"postcode": "SW18 3DD",
"country": "GB"
}
],
"contact": {
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
},
"passengers": [
{
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
}
],
"information": [
{
"type": "Notes",
"value": "Meet at the main entrance."
}
]
}'
Every variant returns the same confirmation body:
{
"job_uuid": "36b5ffa8-61f0-11e5-9d70-feff819cdc9f",
"job_number": "654321",
"booking_status": "booked"
}
Airport pick-ups and drop-offs
When a stop is an airport, set its source to Airport and add an airport object to
that location. Everything else is an ordinary direct booking.
| Field | Description |
|---|---|
iata | Airport IATA code, e.g. LHR. |
terminal | Terminal, e.g. 5. |
flight_number | Flight number, e.g. IB0717. |
arrival_from | Origin of the arriving flight — pick-ups only. |
On a pick-up, the flight details let the driver track the flight and adjust the
meeting time if it lands early or late, so send flight_number and arrival_from
whenever you have them. On a drop-off, iata and terminal are what matter — they
put the car at the right departures door.
Airport pick-up
The airport is the first location. arrival_from is the airport the passenger is
flying in from.
curl -X POST "$QB_BASE/v1/booking/create" \
-H "Authorization: $QB_AUTH" \
-H "Content-Type: application/json" \
-d '{
"payment_method": "Account",
"service": "standard_car",
"pickup_dt": "2026-07-20T09:00:00+01:00",
"locations": [
{
"source": "Airport",
"street_address": "T5 London Heathrow Airport LHR Terminal 5",
"town": "London",
"postcode": "TW6 2NR",
"country": "GB",
"lat": 51.4715271,
"long": -0.4898423,
"airport": {
"iata": "LHR",
"terminal": "5",
"flight_number": "IB0717",
"arrival_from": "Madrid"
}
},
{
"source": "Address",
"street_address": "189 Earlsfield Road",
"town": "London",
"postcode": "SW18 3DD",
"country": "GB"
}
],
"contact": {
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
},
"passengers": [
{
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
}
]
}'
pickup_dt is still the time the car is required. For a pick-up you would normally set
it a little after the scheduled landing time to allow for baggage reclaim.
Airport drop-off
The airport is the last location, and the airport object carries the departing
flight instead.
curl -X POST "$QB_BASE/v1/booking/create" \
-H "Authorization: $QB_AUTH" \
-H "Content-Type: application/json" \
-d '{
"payment_method": "Account",
"service": "standard_car",
"pickup_dt": "2026-07-20T09:00:00+01:00",
"locations": [
{
"source": "Address",
"street_address": "Barbican Centre, 10 Silk St",
"town": "London",
"postcode": "EC2Y 8DS",
"country": "GB",
"lat": 51.520024,
"long": -0.092447
},
{
"source": "Airport",
"street_address": "T5 London Heathrow Airport LHR Terminal 5",
"town": "London",
"postcode": "TW6 2NR",
"country": "GB",
"lat": 51.4715271,
"long": -0.4898423,
"airport": {
"iata": "LHR",
"terminal": "5",
"flight_number": "IB0717"
}
}
],
"contact": {
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
},
"passengers": [
{
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
}
]
}'
Both variants are also available as ready-made request bodies in the API Reference — see the Airport pickup booking and Airport drop booking examples under Create a booking.
Courier delivery
A courier booking is a direct booking with two differences:
- Choose a courier
service(for examplesmall_van). - Give each location its own
contact— the person to collect from at the pick-up and the person to deliver to at each drop-off.passengersis not required.
Use information to carry parcel details (contents, size, handling notes).
curl -X POST "$QB_BASE/v1/booking/create" \
-H "Authorization: $QB_AUTH" \
-H "Content-Type: application/json" \
-d '{
"payment_method": "Account",
"service": "small_van",
"pickup_dt": "2026-07-20T09:00:00+01:00",
"locations": [
{
"source": "Address",
"street_address": "Barbican Centre, 10 Silk St",
"town": "London",
"postcode": "EC2Y 8DS",
"country": "GB",
"notes": "Collect from the loading bay at the rear.",
"contact": {
"name": "Warehouse Desk",
"mobile": "07700900111",
"email": "dispatch@example.com"
}
},
{
"source": "Address",
"street_address": "189 Earlsfield Road",
"town": "London",
"postcode": "SW18 3DD",
"country": "GB",
"notes": "Ring the buzzer for flat 4.",
"contact": {
"name": "Jane Doe",
"mobile": "07700900123",
"email": "jane.doe@example.com"
}
}
],
"contact": {
"name": "Logistics Team",
"mobile": "07700900100",
"email": "logistics@example.com"
},
"information": [
{
"type": "Notes",
"value": "1 box, approx. 5 kg. Fragile — keep upright."
}
]
}'
Multi-account bookings
Some partners manage a main account with one or more linked accounts underneath it — a multi-account setup. To book against a linked account instead of the main one:
- The
Authorizationheader must carry the main account'sclient_id:client_secret— never the linked account's. - Set
payment_methodtoMultiAccount. - Set
account.numberto the linked account's number.
{
"payment_method": "MultiAccount",
"account": {
"number": "123456"
},
"service": "standard_car",
"pickup_dt": "2026-07-20T09:00:00+01:00",
"locations": [
{
"source": "Address",
"street_address": "189 Earlsfield Road",
"town": "London",
"postcode": "SW18 3DD",
"country": "GB"
}
]
}
This applies to any of the booking methods above, and to price quotes as well.
Next steps
- Amend or cancel a booking, or fetch its live detail, under Bookings in the API Reference.
- Track progress via Status webhooks rather than polling.