PUTBookings
Update Booking
/api/v1/bookings/{bookingNumber}Update an existing booking number using the same grouped model as create. You can update customer details, shared booking metadata (guests, payments, customerNote, resellerReference, resellerSource, resellerNote), and per-product item fields by sending items entries keyed by productCode. If an item changes reservationDateTime or quantities, that product allocation is released and recreated inside the same transaction.
Authentication Required
Include Bearer token in Authorization header: Authorization: Bearer YOUR_TOKEN
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
bookingNumber | string | Yes | Unique booking number identifier to update |
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array | No | Per-product item updates. Each entry must identify the existing product by productCode. |
items[].productCode | string | Yes | Existing product code inside the booking number to update |
items[].reservationDateTime | string | No | New reservation date or datetime for that product item |
items[].quantities | array | No | Replacement quantity lines for that product item |
items[].quantities[].label | string | Yes | Quantity line label (e.g. adult, child, senior) |
items[].quantities[].quantity | number | Yes | Number of units for the quantity line (must be > 0) |
items[].quantities[].price | number | Yes | Unit price for the quantity line (>= 0) |
customer | object | No | Customer fields to update (title, names, phone, email, address, etc.) |
customer.firstName | string | No | Customer first name |
customer.lastName | string | No | Customer last name |
customer.title | string | No | Customer title |
customer.email | string | No | Customer email address |
customer.phone | string | No | Customer phone number |
customer.address | string | No | Customer street address |
customer.city | string | No | Customer city |
customer.country | string | No | Customer country |
customer.postCode | string | No | Customer postal / ZIP code |
guests | array | No | Replace the guest list shared by the booking |
payments | array | No | Replace the payment records shared by the booking |
customerNote | string | No | Shared customer note for the booking number |
resellerReference | string | No | Shared reseller booking reference |
resellerSource | string | No | Shared reseller source / channel |
resellerNote | string | No | Shared reseller note for the booking number |
Request Body Example
Example:
{
"items": [
{
"productCode": "P811C6RV",
"reservationDateTime": "2026-03-27T14:00:00",
"quantities": [
{
"label": "adult",
"quantity": 2,
"price": 75
},
{
"label": "child",
"quantity": 1,
"price": 40
}
]
}
],
"customer": {
"phone": "+33687654321",
"address": "15 Avenue de l Opera, Paris"
},
"guests": [
{
"title": "Mr",
"firstName": "John",
"lastName": "Doe",
"age": 37
},
{
"title": "Mrs",
"firstName": "Jane",
"lastName": "Doe",
"age": 35
}
],
"payments": [
{
"method": "CREDIT_CARD",
"amount": 190,
"currency": "EUR",
"reference": "txn-2026-03-20-001"
}
],
"customerNote": "Wheelchair accessible entrance requested",
"resellerReference": "RS-TRAVELMATE-9912",
"resellerSource": "mytravelmate",
"resellerNote": "VIP customer, prioritize fast check-in"
}Response
Success Response Example:
{
"success": true,
"booking": {
"bookingNumber": "PC2236PAQ",
"items": [
{
"productCode": "P811C6RV",
"reservationDate": "2026-03-27",
"reservationTime": "14:00",
"quantities": [
{
"label": "adult",
"quantity": 2,
"price": 75
},
{
"label": "child",
"quantity": 1,
"price": 40
}
],
"resource": {
"code": "RES-LOUVRE-PM",
"name": "Louvre Afternoon Entry",
"type": "ticket"
}
}
],
"guests": [
{
"title": "Mr",
"firstName": "John",
"lastName": "Doe",
"age": 37
},
{
"title": "Mrs",
"firstName": "Jane",
"lastName": "Doe",
"age": 35
}
],
"payments": [
{
"method": "CREDIT_CARD",
"amount": 190,
"currency": "EUR",
"reference": "txn-2026-03-20-001"
}
],
"customerNote": "Wheelchair accessible entrance requested",
"resellerReference": "RS-TRAVELMATE-9912",
"resellerSource": "mytravelmate",
"resellerNote": "VIP customer, prioritize fast check-in",
"status": "created",
"customer": {
"title": "Mr",
"firstName": "John",
"lastName": "Doe",
"phone": "+33687654321",
"email": "[email protected]"
}
}
}Error Response
Error Example:
{
"success": false,
"error": {
"code": "INVALID_REQUEST",
"message": "items[0] must include reservationDateTime or quantities"
}
}Available Errors
| HTTP Status | Code | Meaning |
|---|---|---|
401 | UNAUTHORIZED | Invalid or missing authentication token |
400 | INVALID_REQUEST | Invalid or unsupported payload |
403 | FORBIDDEN | Partner and Booking do not match |
404 | NOT_FOUND | No bookings found for the given booking number or no booking items found for a productCode |
409 | CONFLICT | canceled bookings cannot be updated |
500 | INTERNAL_SERVER_ERROR | Failed to update booking |