This article describes how to manage the crew list of a reservation through the Booking Manager API. It covers how to authenticate, how to read the current crew list, and how to add, update and delete crew members directly from your own website, app or CRM.
The four crew list calls are available from API version 2.2.3. They let you send guest and skipper details straight into Booking Manager, so nobody has to retype them in the crew list. The existing GET /crewListLink/{reservationId} call, which returns a link to the online crew list form, is unchanged.
Authentication
The Booking Manager API uses Bearer Token authentication. Every request must include an Authorization header in the following format:
Authorization: Bearer <your_access_token>- All crew list calls use the base URL
https://www.booking-manager.com/api/v2. - Requests sent without a valid token, or with an expired token, will receive a 401 Unauthorized response.
- Your access token should be kept confidential and stored only on your server side – never exposed in client-side code, mobile apps or public repositories.
Crew list endpoints – overview
All four calls work on the same path and need the ID of the reservation (reservationId), which you can get from GET /reservations or GET /reservation/{id}. The table below summarizes them; each one is explained in detail further down.
| Endpoint | Purpose | Success response |
|---|---|---|
| 1. GET /crewList/{reservationId} (getCrewList) | Retrieve all crew members of the reservation | 200 OK with the crew list (may be empty) |
| 2. POST /crewList/{reservationId} (insertCrewList) | Add one or more crew members | 201 Created with the complete crew list |
| 3. PUT /crewList/{reservationId} (updateCrewList) | Update one or more existing crew members | 200 OK with the complete crew list |
| 4. DELETE /crewList/{reservationId} (deleteCrewList) | Remove one or more crew members | 204 No Content |
Step-by-step usage
Step 1 – Retrieve the crew list (GET /crewList/{reservationId})
The first call to make is getCrewList. It returns every crew member of the reservation as a JSON array. If no crew members have been entered yet, you get an empty array [].
If you use an agency token, this call returns the crew list of the related charter reservation at the charter operator.
GET /api/v2/crewList/11851860000100797
Authorization: Bearer <your_access_token>Response: 200 OK
[
{
"id": 1234567,
"name": "John",
"surname": "Smith",
"sex": "Male",
"status": "SKIPPER",
"dateOfBirth": "1980-05-14 00:00:00",
"citizenship": 380,
"countryOfResidence": 380,
"cityOfResidence": "Zagreb",
"documentType": "002",
"documentNumber": "AB1234567",
"dateOfApplication": "2026-06-06 17:00:00",
"dateOfDeparture": "2026-06-13 09:00:00",
"phoneNumber": "+385911234567",
"email": "john.smith@example.com",
"skipperLicence": "HR-12345"
},
{
"id": 1234568,
"name": "Anna",
"surname": "Smith",
"sex": "Female",
"status": "PASSENGER",
"dateOfBirth": "1983-11-02 00:00:00",
"citizenship": 380,
"documentType": "002",
"documentNumber": "AB7654321"
}
]Store the id of each crew member you receive – it is needed to update or delete that member in the following steps.
Step 2 – Add crew members (POST /crewList/{reservationId})
To add guests or crew to the reservation, call insertCrewList with a JSON array of one or more crew members. For each crew member:
nameandsurnameare required.idmust not be sent – it is assigned by Booking Manager and ignored if sent.- All other fields are optional.
If any crew member in the list fails validation, the whole request is rejected and nothing is added. The error message lists each problem with its position in the list, for example crewList[1].
POST /api/v2/crewList/11851860000100797
Authorization: Bearer <your_access_token>
Content-Type: application/json
[
{
"name": "John",
"surname": "Smith",
"sex": "Male",
"status": "SKIPPER",
"dateOfBirth": "1980-05-14 00:00:00",
"citizenship": 380,
"documentType": "002",
"documentNumber": "AB1234567",
"skipperLicence": "HR-12345",
"email": "john.smith@example.com",
"phoneNumber": "+385911234567"
},
{
"name": "Anna",
"surname": "Smith",
"sex": "Female",
"status": "PASSENGER",
"dateOfBirth": "1983-11-02 00:00:00",
"citizenship": 380,
"documentType": "002",
"documentNumber": "AB7654321"
}
]Response: 201 Created, with the complete crew list of the reservation, including the new members and their assigned id values.
Why you should read before you write
- A crew member who already exists on the reservation is rejected by POST.
- Calling getCrewList first shows who is already on the list, so you can update them with PUT instead.
- This avoids duplicates and failed requests.
Step 3 – Update crew members (PUT /crewList/{reservationId})
To change the details of crew members already on the reservation, call updateCrewList with a JSON array of one or more crew members. For each crew member:
idis required and must belong to a crew member of this reservation.- Only the fields you send are changed – fields you leave out keep their current value.
- A crew member who can no longer be edited, for example because their data has already been sent to eCrew, is rejected.
The example below changes only the travel document and the check-in and check-out dates of one crew member:
PUT /api/v2/crewList/11851860000100797
Authorization: Bearer <your_access_token>
Content-Type: application/json
[
{
"id": 1234567,
"documentType": "002",
"documentNumber": "CD9988776",
"dateOfApplication": "2026-06-06 17:00:00",
"dateOfDeparture": "2026-06-13 09:00:00"
}
]Response: 200 OK, with the complete, updated crew list of the reservation.
Step 4 – Delete crew members (DELETE /crewList/{reservationId})
To remove crew members, call deleteCrewList and pass the id of each member in the crewMemberId query parameter. No request body is needed.
- At least one
crewMemberIdis required. - To delete several members in one call, repeat the parameter:
?crewMemberId=1234567&crewMemberId=1234568. - Deleting crew members cannot be undone.
DELETE /api/v2/crewList/11851860000100797?crewMemberId=1234567&crewMemberId=1234568
Authorization: Bearer <your_access_token>Response: 204 No Content. The response has no body; call getCrewList to see the remaining crew list.
Errors and how to fix them
When a call fails, the API returns an HTTP status code and a plain-text message explaining the problem. Messages about a specific crew member start with its position in the list you sent, for example crewList[0] for the first one.
| Status | Example message | Cause | How to fix it |
|---|---|---|---|
| 400 Bad Request | crewList[0]: name and surname are obligatory | A crew member in a POST is missing name or surname. | Add both fields to every crew member. |
| 400 Bad Request | crewList[0]: invalid documentType: 999 | documentType is not a valid code. | Use a code from Document type codes, as a 3-digit string. |
| 400 Bad Request | Crew Member <123456789100797> already exists | The crew member you are adding already exists on the reservation. | Use PUT to change an existing crew member. |
| 400 Bad Request | Crew member is no longer editable | The crew member can no longer be changed, e.g. after it was sent to eCrew. | Make any needed changes directly with the charter operator. |
| 401 Unauthorized | – | The bearer token is missing or invalid. | Check the Authorization header and your API token. |
| 404 Not Found | Entity not found: 12345678900797 | The reservation does not exist, or a crew member id does not belong to this reservation. | Check the reservation ID and get current crew member IDs with GET. |
| 422 Unprocessable Entity | list of crew members is obligatory | The POST or PUT body is missing or is an empty list. | Send a JSON array with at least one crew member. |
| 422 Unprocessable Entity | at least 1 crew member id must be sent | A DELETE was sent without any crewMemberId. | Add at least one crewMemberId query parameter. |
Comments
0 comments
Please sign in to leave a comment.