Table of Contents

Identifier stability

The V2 API exposes two kinds of identifiers. Choose the right kind for what you need to do.

Stable identifiers — safe to persist

Use these when storing data in your own database, displaying values to customers, or comparing across requests over time:

Identifier Source
Booking id Returned by /bookings/create/.../confirm. The durable handle for a confirmed booking.
packageCode /packages data[].packageCode. Also the search input on /search/packages.
Port codes /refdata/ports [].code.
Ship codes /refdata/ships data[].code.
Cabin grade codes /refdata/cabin-grades [].code.
Addon, excursion, and supplemental-tour codes The code field on every entry returned by the get-applicable endpoints.
Promotion codes[] /promotions data[].codes[]. The promotion-code strings (e.g. C1-26-US-W2WI30) are the partner-facing identifier for a promotion.

Snapshot-only identifiers — do not persist

The id fields on read-only inventory endpoints are valid only within a single response cycle:

Field Endpoint
Voyage id /voyages data[].id, and /promotions data[].applicableVoyages[].
Package id /packages data[].id, and /promotions data[].applicableTours[].
Promotion id /promotions data[].id, and /voyages / /packages data[].promotions[].

Use these only to cross-reference entries you fetched together — for example, resolving the applicableVoyages array on a /promotions entry against the data[].id values in a /voyages response retrieved at the same time. Do not store them, send them to customers, or compare them across requests.

Booking-flow identifiers

Identifiers used inside the booking flow live in the Session lifecyclesessionId is scoped to a single booking session and is not a persistent identifier; guestId is per-session, assigned at search time. The booking id returned by confirm is the only persistent identifier produced by the booking flow.