Table of Contents

List Available Cabin Numbers (Voyage)

See Booking flow for the end-to-end lifecycle.

Endpoint: /bookings/create/voyage-only/{:sessionId}/cabin-numbers

METHOD: GET

Lists the cabin numbers that can currently be booked for one cabin grade on a held booking, grouped by deck.

A booking is created at grade level: unless a specific cabin is chosen, it holds a guarantee cabin and the cabin number is assigned before departure. Call this endpoint once the booking is held to see which individual cabins are available, then apply a chosen cabin.

The booking must already hold a cabin of the grade being asked about — availability is answered against the cabins on the booking, not against the search. Call it once per grade if the booking holds more than one.

Some grades do not correspond to specific cabins at all — the grade itself stands for "a cabin of this standard", and which cabin that is never becomes selectable. Cabin numbers cannot be listed or applied for those grades, and both calls return 400.

An empty array means no individual cabins of that grade can be selected right now. That is a normal response, not an error; the booking keeps its guarantee cabin, and a later call can return cabins.

Path Parameters

Name Type Required Description
sessionId string (UUID) Yes Session returned by /search/voyages. Must be voyage-only and hold a booking.

Query Parameters

Name Type Required Description
cabinGrade string Yes Cabin grade code to list numbers for. Must match the code of a cabin held on the booking.
user_key string Yes Unique key associated with the calling agency.

Example

Request

curl --location '{:apiBase}/bookings/create/voyage-only/{:sessionId}/cabin-numbers?cabinGrade=O3&user_key=abcdef' \
--header 'Authorization: Bearer XXXXXXXX'

Response

[
    {
        "deck": "3",
        "cabins": [
            {
                "cabinNumber": "313",
                "code": "O3",
                "maximumOccupancy": 3
            },
            {
                "cabinNumber": "315",
                "code": "O3",
                "maximumOccupancy": 3
            }
        ]
    },
    {
        "deck": "4",
        "cabins": [
            {
                "cabinNumber": "412",
                "code": "O3",
                "maximumOccupancy": 3
            }
        ]
    }
]

Fields

Field Type Description
[].deck string Deck the cabins in this group are on.
[].cabins array of objects Cabins available on that deck for the requested grade.
[].cabins[].cabinNumber string The cabin number to send to /cabin-numbers to book this cabin.
[].cabins[].code string Cabin grade code — always the grade requested.
[].cabins[].maximumOccupancy number Most passengers the cabin sleeps. A cabin holding fewer passengers than this can still be booked.

Errors

See Error model for response-body shapes across status codes.

Status Cause
400 cabinGrade or user_key is missing, the booking holds no cabin of that grade, or the grade does not correspond to specific cabins.
404 The session does not exist or has expired.
409 The session is not voyage-only, or no held booking has been created in it yet.

Availability changes. These cabins are available at the moment you ask. Another booking can take one before you apply your choice, so treat the list as current rather than reserved — see Apply a Cabin Number for how that surfaces.