Manage bookings
After creating a booking, use the management endpoints to retrieve its details, make changes to passenger information or timing, or cancel the booking entirely.
Get a booking
/api/v1/bookings/{tagName}
Returns the full details for a booking, including current status and assigned driver information when available.
Path parameter
| Parameter | Type | Description |
|---|---|---|
| tagName | string | The booking reference returned when the booking was created (e.g. MV-20260501-4821). |
curl https://api.moovlogic.com/api/v1/bookings/MV-20260501-4821 \
-H "Authorization: Bearer YOUR_TOKEN"
tag_name = 'MV-20260501-4821'
response = requests.get(
f'https://api.moovlogic.com/api/v1/bookings/{tag_name}',
headers={'Authorization': f'Bearer {token}'}
)
booking = response.json()
<?php
$tagName = 'MV-20260501-4821';
$ch = curl_init("https://api.moovlogic.com/api/v1/bookings/$tagName");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"]
]);
$booking = json_decode(curl_exec($ch), true);
curl_close($ch);
const tagName = 'MV-20260501-4821';
const response = await fetch(`https://api.moovlogic.com/api/v1/bookings/${tagName}`, {
headers: { 'Authorization': `Bearer ${token}` }
});
const booking = await response.json();
Response — 200 OK
{
"tagName": "MV-20260501-4821",
"bookingId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"status": "Allocated",
"statusLabel": "Driver assigned",
"serviceTypeName": "Standard Saloon",
"quotedFare": 85.00,
"currency": "GBP",
"passengerName": "Jane Smith",
"passengerEmail": "jane@example.com",
"passengerPhone": "+447911123456",
"pickupDateTimeUtc": "2026-05-01T14:00:00Z",
"pickupAddress": {
"premiseName": "Heathrow Airport Terminal 5, Longford, Hounslow TW6 2GA, UK",
"addressLine1": "Heathrow Airport Terminal 5",
"town": "Hounslow",
"postCode": "TW6 2GA",
"country": "United Kingdom"
},
"dropoffAddress": {
"premiseName": "10 Downing Street, Westminster, London SW1A 2AA, UK",
"addressLine1": "10 Downing Street",
"town": "London",
"postCode": "SW1A 2AA",
"country": "United Kingdom"
},
"flightNumber": "BA286",
"notes": "Meet in arrivals, holding name sign",
"externalReference": "HOTEL-2026-04821",
"driver": {
"name": "James Wilson",
"phone": "+447900000000",
"vehicleRegistration": "AB21 XYZ",
"vehicleColour": "Black",
"vehicleModel": "Mercedes E-Class"
},
"createdAt": "2026-04-19T10:23:00Z"
}
driver object is only present once a driver has been assigned (status Allocated or later). It is null for Pending bookings.Update a booking
/api/v1/bookings/{tagName}
Use this to amend the booking. Omit any fields you do not want to change — only included fields will be updated.
Updatable fields
| Parameter | Type | Description |
|---|---|---|
| pickupDateTimeUtc | string (ISO 8601) | New pickup time in UTC. |
| passengerName | string | Updated passenger name. |
| passengerPhone | string | Updated passenger phone. |
| flightNumber | string | Updated flight number. |
| notes | string | Updated driver notes. |
| passengers | integer | Updated passenger count. |
| luggage | integer | Updated luggage count. |
Allocated or later). Cancel the booking and create a new one if addresses need to change at that stage.curl -X PUT https://api.moovlogic.com/api/v1/bookings/MV-20260501-4821 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"pickupDateTimeUtc": "2026-05-01T15:30:00Z",
"notes": "Flight delayed — meet in terminal 5 Arrivals"
}'
response = requests.put(
f'https://api.moovlogic.com/api/v1/bookings/{tag_name}',
json={
'pickupDateTimeUtc': '2026-05-01T15:30:00Z',
'notes': 'Flight delayed — meet in terminal 5 Arrivals'
},
headers={'Authorization': f'Bearer {token}'}
)
await fetch(`https://api.moovlogic.com/api/v1/bookings/${tagName}`, {
method: 'PUT',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
pickupDateTimeUtc: '2026-05-01T15:30:00Z',
notes: 'Flight delayed — meet in terminal 5 Arrivals'
})
});
Cancel a booking
/api/v1/bookings/{tagName}
Cancels the booking. A cancellation reason body is optional but recommended.
curl -X DELETE https://api.moovlogic.com/api/v1/bookings/MV-20260501-4821 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "reason": "Customer cancelled — change of plans" }'
response = requests.delete(
f'https://api.moovlogic.com/api/v1/bookings/{tag_name}',
json={'reason': 'Customer cancelled — change of plans'},
headers={'Authorization': f'Bearer {token}'}
)
print(response.json()['status']) # "Cancelled"
<?php
$ch = curl_init("https://api.moovlogic.com/api/v1/bookings/$tagName");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode(['reason' => 'Customer cancelled'])
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
const response = await fetch(`https://api.moovlogic.com/api/v1/bookings/${tagName}`, {
method: 'DELETE',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ reason: 'Customer cancelled — change of plans' })
});
const { status } = await response.json(); // "Cancelled"
Response — 200 OK
{
"tagName": "MV-20260501-4821",
"status": "Cancelled",
"cancelledAt": "2026-04-19T11:00:00Z"
}