# API Reference
The CitizenPlane v4 API is based on REST (opens new window), returns JSON responses and uses standard HTTP codes. The API base url is https://booking-api.citizenplane.com/v4.
This API implements an NDC-inspired layer, providing a standardized interface for distributors to search, offer, order and book flights through CitizenPlane's inventory.
To get started with CitizenPlane v4 API, send us a mail at tech@citizenplane.com. We'll create your account, and send the credentials to start using our API.
# Authentication
The CitizenPlane v4 API uses API Key authentication. All requests must include a valid API key. Requests made without authentication will fail, as well as requests made over plain HTTP rather than HTTPS.
To get your API key, send us a mail at tech@citizenplane.com and we'll assign one for you.
# Errors
CitizenPlane uses conventional HTTP response codes to indicate the success or failure of an API request. Codes in the 4xx range indicate a request that failed given the information provided. Codes in the 5xx range indicate an internal error, which is rare.
V4 returns standard Hapi/Boom error payloads. For most client errors, the useful detail is in the message field. V4 does not add a custom type field. Internal 5xx errors use Boom's generic server-error payload.
Example error response
{
"statusCode": 404,
"error": "Not Found",
"message": "order not found"
}
# HTTP Status Codes Summary
| Code | Status | Meaning |
|---|---|---|
| 400 | Bad Request | Your request is invalid (e.g. payload doesn't match expected schema) |
| 401 | Unauthorized | Your API key is wrong |
| 403 | Forbidden | Balance payment method is not available for the organization |
| 404 | Not Found | The specified resource could not be found (e.g. offer, order, reservation) |
| 406 | Not Acceptable | Card payment requires additional verification or is not ready to capture |
| 422 | Unprocessable Entity | Payment data was rejected or does not match the order amount |
| 500 | Internal Server Error | Error on CitizenPlane's end. Try again later and contact us if the issue remains |
# Key concepts
The v4 API follows a structured booking flow:
- Search - Find available offers matching travel criteria
- Get Offer - Get detailed pricing for a specific flight combination
- Get Baggage - Retrieve available baggage options for an offer
- Get Fares - Retrieve all available fares for an offer
- Create Order - Create an order with passenger details and selected baggage
- Confirm Order - Confirm the order and trigger the booking
- Get Order - Retrieve the latest persisted order state
- Get Reservation - Retrieve the final reservation details including PNR
# Offers
An offer represents a flight itinerary with pricing. Offers are stored for 30 minutes after being retrieved via the Get Offer endpoint. Any order using an expired offer will fail.
# Orders
An order is created once passengers and baggage are selected. An order must be confirmed to trigger the actual booking. Observable order statuses include OPEN, BOOKED, and FAILED; a successful confirmation returns BOOKED and creates a reservation.
# Reservations
A reservation is the final booking record. It contains the PNR, passenger details, and flight information.
# Customer-specific content
CitizenPlane provides a customerCode for V4 integrations. Include this code in the Search Offers and Get Offer request bodies; it is required for both endpoints. Other endpoints do not accept customerCode as input. Do not send arbitrary labels: when an endpoint resolves customer context, an unknown customerCode can return 404 Not Found.
# Supported values
# Trip types
| Value | Description |
|---|---|
ONE_WAY | One-way trip |
ROUND_TRIP | Round trip |
# Travel classes
| Value | Description |
|---|---|
ECONOMY | Economy class (currently the only supported class) |
# Passenger types
| Value | Description |
|---|---|
adult | Adult passenger |
child | Child passenger |
infant | Infant passenger (under 2 years old) |
# Payment methods
| Value | Description |
|---|---|
card | Card payment handled through CitizenPlane. A card-processing fee may be exposed in paymentOptions and is included in the order totalPrice when card is selected. |
balance | Account-balance or self-PSP payment. Available only when CitizenPlane has enabled balance payment for your organization. |
# Baggage types
| Value | Description |
|---|---|
CHECK_IN | Checked baggage |
CABIN | Cabin baggage |
# Location types
| Value | Description |
|---|---|
AIRPORT | IATA airport code (e.g. CDG) |
CITY | IATA city code (e.g. PAR) |
# Endpoints
# Search Offers
Search for available flight offers matching the given travel criteria. Returns a list of offers with pricing for one-way or round-trip itineraries. This endpoint supports both airport and city codes for origin/destination.
POST
https://booking-api.citizenplane.com/v4/search
WARNING
Only ECONOMY travel class is currently sold. Searching with another travel class returns an empty offers array.
# Body parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| adults | integer | required | Number of adults (min 1, max 9) |
| children | integer | required | Number of children (min 0, max 9) |
| infants | integer | required | Number of infants (min 0, max = adults) |
| tripType | string | required | ONE_WAY or ROUND_TRIP |
| travelClass | string | optional | Travel class. Defaults to ECONOMY |
| customerCode | string | required | Customer or company code provided by CitizenPlane |
| outboundSegment | object | required | Outbound segment details. See segment parameters |
| inboundSegment | object | required if round trip | Inbound segment details (required when tripType is ROUND_TRIP). See segment parameters |
# Search segment parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| origin | object | required | Origin location with code (3-letter IATA code) and type (AIRPORT or CITY) |
| destination | object | required | Destination location with code (3-letter IATA code) and type (AIRPORT or CITY) |
| departureDate | string | required | Departure date. Expected format: YYYY-MM-DD |
Example request
curl 'https://booking-api.citizenplane.com/v4/search' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}' \
-d '{
"adults": 1,
"children": 0,
"infants": 0,
"tripType": "ONE_WAY",
"travelClass": "ECONOMY",
"outboundSegment": {
"origin": {
"code": "CDG",
"type": "AIRPORT"
},
"destination": {
"code": "AYT",
"type": "AIRPORT"
},
"departureDate": "2027-08-06"
},
"inboundSegment": null,
"customerCode": "ACME"
}'
Example response
{
"offers": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"outboundSegment": {
"sections": [
{
"origin": "CDG",
"destination": "AYT",
"departureDate": "2027-08-06T17:45:00",
"arrivalDate": "2027-08-06T22:40:00",
"travelClass": "ECONOMY",
"availableSeats": 10,
"flightNumber": "511",
"operatingCarrierCode": "XQ",
"marketingCarrierCode": "XQ",
"technicalStops": []
}
]
},
"fare": {
"passengerPricingByPassengerType": {
"adult": {
"fareAmount": {
"amount": 627.27,
"currency": "EUR"
},
"taxAmount": {
"amount": 0,
"currency": "EUR"
},
"numberOfPassengers": 1
}
},
"includedBaggage": {
"checkedBaggageQuantity": 1,
"cabinBaggageQuantity": 1
},
"price": {
"totalAmount": 627.27,
"sourceAmount": 627.27,
"currency": "EUR"
}
},
"paymentOptions": [
{
"type": "card",
"fee": {
"amount": 12.55,
"currency": "EUR"
}
},
{
"type": "balance",
"fee": {
"amount": 0,
"currency": "EUR"
}
}
]
}
]
}
# Get Offer
Retrieve detailed offer information for a specific flight combination. This endpoint verifies availability and pricing with the supplier and returns a complete offer with fare details, passenger information requirements, and an offer ID that can be used to create an order.
The offer is stored in cache for 30 minutes.
POST
https://booking-api.citizenplane.com/v4/offer
# Body parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| adults | integer | required | Number of adults (min 1, max 9) |
| children | integer | required | Number of children (min 0, max 9) |
| infants | integer | required | Number of infants (min 0, max = adults) |
| tripType | string | required | ONE_WAY or ROUND_TRIP |
| travelClass | string | optional | Travel class. Defaults to ECONOMY |
| customerCode | string | required | Customer or company code provided by CitizenPlane for customer-specific offer filtering |
| outboundSegment | object | required | Outbound segment with sections. See offer segment parameters |
| inboundSegment | object | required if round trip | Inbound segment with sections (required when tripType is ROUND_TRIP) |
# Offer segment parameters
Each segment contains an array of sections:
| Parameter | Type | Status | Description |
|---|---|---|---|
| origin | string | required | 3-letter IATA airport code |
| destination | string | required | 3-letter IATA airport code |
| departureDate | string | required | Departure date. Format: YYYY-MM-DDTHH:mm:ss |
| arrivalDate | string | required | Arrival date. Format: YYYY-MM-DDTHH:mm:ss |
| flightNumber | string | required | Flight number (1-4 digits) |
| operatingCarrierCode | string | required | 2-letter IATA operating carrier code |
| marketingCarrierCode | string | required | 2-letter IATA marketing carrier code |
| travelClass | string | optional | Travel class. Defaults to ECONOMY |
Example request
curl 'https://booking-api.citizenplane.com/v4/offer' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}' \
-d '{
"adults": 1,
"children": 0,
"infants": 0,
"tripType": "ONE_WAY",
"travelClass": "ECONOMY",
"outboundSegment": {
"sections": [
{
"origin": "CDG",
"destination": "AYT",
"departureDate": "2027-08-06T17:45:00",
"arrivalDate": "2027-08-06T22:40:00",
"flightNumber": "511",
"operatingCarrierCode": "XQ",
"marketingCarrierCode": "XQ"
}
]
},
"inboundSegment": null,
"customerCode": "ACME"
}'
Example response
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"outboundSegment": {
"sections": [
{
"origin": "CDG",
"destination": "AYT",
"departureDate": "2027-08-06T17:45:00",
"arrivalDate": "2027-08-06T22:40:00",
"travelClass": "ECONOMY",
"flightNumber": "511",
"departureTerminal": "1",
"arrivalTerminal": "1",
"operatingCarrierCode": "XQ",
"marketingCarrierCode": "XQ",
"technicalStops": []
}
]
},
"cheapestFare": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"passengerPricingByPassengerType": {
"adult": {
"fareAmount": {
"amount": 627.27,
"currency": "EUR"
},
"taxAmount": {
"amount": 0,
"currency": "EUR"
},
"numberOfPassengers": 1
}
},
"includedBaggage": [
{
"quantity": 1,
"descriptor": { "weight": 20 },
"type": "CHECK_IN"
},
{
"quantity": 1,
"descriptor": {
"weight": 10,
"dimensions": { "width": 56, "height": 45, "depth": 25 }
},
"type": "CABIN"
}
],
"totalPrice": {
"amount": 627.27,
"currency": "EUR"
}
},
"providerAdditionalPassengerInformationByPassengerType": {
"adult": {
"providerIdentificationTypeOptions": ["PASSPORT"],
"providerRequiredAdditionalFields": ["BIRTH_DATE"]
}
},
"paymentOptions": [
{
"type": "card",
"fee": {
"amount": 12.55,
"currency": "EUR"
}
},
{
"type": "balance",
"fee": {
"amount": 0,
"currency": "EUR"
}
}
]
}
# Get All Fares
Retrieve all available fare options for a given offer.
If the offer is missing, expired, or belongs to another user, this endpoint returns 200 with an empty fares array rather than an error.
GET
https://booking-api.citizenplane.com/v4/offer/{offerId}/fares
# Path parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| offerId | string | required | UUID of the offer |
Example request
curl 'https://booking-api.citizenplane.com/v4/offer/b2c3d4e5-f6a7-8901-bcde-f12345678901/fares' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}'
# Get Baggage
Retrieve available baggage options (checked and cabin) for a given offer. This returns paid baggage options that are not included in the base fare.
GET
https://booking-api.citizenplane.com/v4/offer/{offerId}/baggage
# Path parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| offerId | string | required | UUID of the offer |
Example request
curl 'https://booking-api.citizenplane.com/v4/offer/b2c3d4e5-f6a7-8901-bcde-f12345678901/baggage' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}'
Example response
{
"fareBaggageOptions": [
{
"fareId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"outboundSegmentOptions": [
{
"type": "CABIN",
"maxPiecesPerPassenger": 1,
"maxKilosPerPiece": 10,
"pricePerPiece": {
"amount": 15.00,
"currency": "EUR"
}
},
{
"type": "CHECK_IN",
"maxPiecesPerPassenger": 1,
"maxKilosPerPiece": 20,
"pricePerPiece": {
"amount": 36.05,
"currency": "EUR"
}
}
],
"inboundSegmentOptions": null
}
]
}
# Create Order
Create an order for a previously retrieved offer. This step validates the offer, creates internal booking requests, and returns an order with pricing and passenger details.
POST
https://booking-api.citizenplane.com/v4/order?offerId={offerId}&fareId={fareId}
Offer expiration
The offer must still be valid (within 30 minutes of retrieval). If the offer has expired, a new one must be obtained via the Get Offer endpoint.
# Query parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| offerId | string | required | UUID of the offer |
| fareId | string | required | UUID of the fare within the offer |
# Body parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| passengers | array | required | Array of passenger objects. See passenger parameters |
| selectedBaggage | array | required | Array of baggage selections per passenger. See baggage parameters |
| customerContact | object | required | Contact information. See customer contact parameters |
| paymentMethod | object | required | Payment method. Must be exactly one of { "card": true } or { "balance": true } |
# Order passenger parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| number | integer | required | Passenger number (sequential) |
| type | string | required | adult, child, or infant |
| title | string | required | MR, MRS, or MS |
| name | string | required | Passenger's first name |
| middleName | string | optional | Passenger's middle name |
| firstLastName | string | required | Passenger's first last name |
| secondLastName | string | optional | Passenger's second last name |
| gender | string | required | MALE or FEMALE |
| birthDate | string | optional | Date of birth. Format: YYYY-MM-DD. Required for children and infants. Required for adults unless the supplier allows optional DOB. |
| nationalityCountryCode | string | optional | 2-letter country code |
| countryCodeOfResidence | string | optional | 2-letter country code of residence |
| localityCodeOfResidency | string | optional | Locality code of residency when required by the fare rules |
| identification | object | optional | Identification document. See identification parameters |
| phone | object | optional | Phone number with number and countryCode fields |
# Identification parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| type | string | required | PASSPORT, NIE, NIF, NATIONAL_ID_CARD, or BIRTH_DATE |
| identificationNumber | string | required | The identification document number |
| expirationDate | string | required | Expiration date. Format: YYYY-MM-DD. Must be in the future |
| issueCountryCode | string | required | 2-letter country code of issue |
# Order baggage parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| passengerNumber | integer | required | The passenger number this baggage selection applies to |
| outboundSegmentBaggageSelection | array | required | Baggage for outbound segment |
| inboundSegmentBaggageSelection | array or null | optional | Baggage for inbound segment (for round trips) |
Each baggage selection item:
| Parameter | Type | Status | Description |
|---|---|---|---|
| type | string | required | CHECK_IN or CABIN |
| numberOfPieces | integer | required | Number of bags |
| kilosPerPiece | integer | required | Weight per bag in kg |
# Customer contact parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| name | string | required | Contact first name |
| lastNames | string | required | Contact last names |
| gender | string | required | MALE or FEMALE |
| string | required | Contact email | |
| countryCode | string | required | 2-letter country code |
| phone | object | required | Phone with number and countryCode fields |
| address | string | required | Contact address |
| cityName | string | required | Contact city |
| zipCode | string | required | Contact postal code |
| carrierPortalCredentials | object | optional | Carrier portal credentials when provided by CitizenPlane for the booking flow |
Example request
curl 'https://booking-api.citizenplane.com/v4/order?offerId=b2c3d4e5-f6a7-8901-bcde-f12345678901&fareId=c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}' \
-d '{
"passengers": [
{
"number": 1,
"type": "adult",
"title": "MR",
"name": "John",
"middleName": "Paul",
"firstLastName": "Doe",
"secondLastName": null,
"gender": "MALE",
"birthDate": "1990-01-15",
"nationalityCountryCode": "FR",
"countryCodeOfResidence": "FR",
"localityCodeOfResidency": "FR-PAR",
"identification": {
"type": "PASSPORT",
"identificationNumber": "ABCDE123",
"expirationDate": "2030-01-01",
"issueCountryCode": "FR"
},
"phone": {
"number": "+33600000000",
"countryCode": "FR"
}
}
],
"selectedBaggage": [
{
"passengerNumber": 1,
"outboundSegmentBaggageSelection": [
{
"type": "CHECK_IN",
"numberOfPieces": 1,
"kilosPerPiece": 20
}
],
"inboundSegmentBaggageSelection": null
}
],
"customerContact": {
"name": "John",
"lastNames": "Doe",
"gender": "MALE",
"email": "john.doe@example.com",
"countryCode": "FR",
"phone": {
"number": "+33600000000",
"countryCode": "FR"
},
"address": "123 Rue de Paris",
"cityName": "Paris",
"zipCode": "75001",
"carrierPortalCredentials": {
"username": "carrier-user@example.com",
"password": "carrier-password"
}
},
"paymentMethod": {
"card": true
}
}'
Example response
{
"id": "d4e5f6a7-b8c9-4123-abcd-234567890123",
"offer": {
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"outboundSegment": {
"sections": [
{
"origin": "CDG",
"destination": "AYT",
"departureDate": "2027-08-06T17:45:00",
"arrivalDate": "2027-08-06T22:40:00",
"travelClass": "ECONOMY",
"flightNumber": "511",
"departureTerminal": "1",
"arrivalTerminal": "1",
"operatingCarrierCode": "XQ",
"marketingCarrierCode": "XQ",
"technicalStops": []
}
]
},
"fare": {
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"passengerPricingByPassengerType": {
"adult": {
"fareAmount": {
"amount": 627.27,
"currency": "EUR"
},
"taxAmount": {
"amount": 0,
"currency": "EUR"
},
"numberOfPassengers": 1
}
},
"includedBaggage": [
{
"quantity": 1,
"descriptor": { "weight": 20 },
"type": "CHECK_IN"
}
],
"totalPrice": {
"amount": 627.27,
"currency": "EUR"
}
}
},
"passengers": [
{
"number": 1,
"type": "adult",
"title": "MR",
"name": "John",
"middleName": "Paul",
"firstLastName": "Doe",
"gender": "MALE",
"birthDate": "1990-01-15",
"nationalityCountryCode": "FR",
"countryCodeOfResidence": "FR",
"localityCodeOfResidency": "FR-PAR",
"identification": {
"type": "PASSPORT",
"identificationNumber": "ABCDE123",
"expirationDate": "2030-01-01",
"issueCountryCode": "FR"
}
}
],
"selectedBaggage": [
{
"passengerNumber": 1,
"outboundSegmentBaggageSelection": [
{
"type": "CHECK_IN",
"numberOfPieces": 1,
"kilosPerPiece": 20,
"pricePerPiece": {
"amount": 36.05,
"currency": "EUR"
}
}
],
"inboundSegmentBaggageSelection": []
}
],
"customerContact": {
"name": "John",
"lastNames": "Doe",
"gender": "MALE",
"email": "john.doe@example.com",
"countryCode": "FR",
"phone": {
"number": "+33600000000",
"countryCode": "FR"
},
"address": "123 Rue de Paris",
"cityName": "Paris",
"zipCode": "75001",
"carrierPortalCredentials": {
"username": "carrier-user@example.com",
"password": "carrier-password"
}
},
"paymentMethod": {
"card": true
},
"status": "OPEN",
"totalPrice": {
"amount": 676.59,
"currency": "EUR"
}
}
# Confirm Order
Confirm a previously created order. This request is required and must send the same paymentMethod selected during Create Order. A successful confirmation returns the order with status BOOKED and a reservationId.
POST
https://booking-api.citizenplane.com/v4/order/{orderId}/confirm
WARNING
An order can only be confirmed once. Duplicate confirmation requests will be rejected.
# Path parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| orderId | string | required | UUID of the order to confirm |
# Body parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| paymentMethod | object | required | Must match the Create Order payment method, either { "card": true } or { "balance": true } |
| payment_intent_id | string | required for card if payment_method is not sent | Stripe PaymentIntent ID. For card, send exactly one of payment_intent_id or payment_method |
| payment_method | string | required for card if payment_intent_id is not sent | Stripe PaymentMethod ID. For card, send exactly one of payment_intent_id or payment_method |
| three_d_secure | object | optional with payment_method only | 3DS data. Allowed only when payment_method is sent |
For three_d_secure, version must be 1.0.2, 2.1.0, or 2.2.0; electronic_commerce_indicator must be 05, 06, 01, or 02; cryptogram and transaction_id are required. For balance, no Stripe payment fields are allowed and CitizenPlane must have enabled balance payment for your organization.
Example request
curl -X POST 'https://booking-api.citizenplane.com/v4/order/d4e5f6a7-b8c9-4123-abcd-234567890123/confirm' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}' \
-d '{
"paymentMethod": {
"card": true
},
"payment_method": "pm_1PxYzABC123456789",
"three_d_secure": {
"version": "2.2.0",
"electronic_commerce_indicator": "05",
"cryptogram": "4BQwsg4yuKt0S1LI1nDZTcO9vUM=",
"transaction_id": "f879ea1c-aa2c-4441-806d-e30406466d79"
}
}'
Example response
{
"id": "d4e5f6a7-b8c9-4123-abcd-234567890123",
"offer": {
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"outboundSegment": { "sections": [...] },
"fare": { ... }
},
"passengers": [...],
"selectedBaggage": [...],
"customerContact": { ... },
"paymentMethod": {
"card": true
},
"status": "BOOKED",
"reservationId": "e5f6a7b8-c9d0-4234-abcd-345678901234",
"totalPrice": {
"amount": 676.59,
"currency": "EUR"
}
}
# Get Order
Retrieve the current status and details of an order.
GET
https://booking-api.citizenplane.com/v4/order/{orderId}
# Path parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| orderId | string | required | UUID of the order |
Example request
curl 'https://booking-api.citizenplane.com/v4/order/d4e5f6a7-b8c9-4123-abcd-234567890123' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}'
# Get Reservation by ID
Retrieve reservation details using the reservation ID. The reservation contains the PNR, passenger details, flight segments, baggage, and fare information.
GET
https://booking-api.citizenplane.com/v4/reservation/{reservationId}
# Path parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| reservationId | string | required | UUID of the reservation |
Example request
curl 'https://booking-api.citizenplane.com/v4/reservation/e5f6a7b8-c9d0-4234-abcd-345678901234' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}'
Example response
{
"id": "e5f6a7b8-c9d0-4234-abcd-345678901234",
"orderId": "d4e5f6a7-b8c9-4123-abcd-234567890123",
"pnr": "CPABCD",
"email": "john.doe@example.com",
"outboundSegment": {
"sections": [
{
"origin": "CDG",
"destination": "AYT",
"departureDate": "2027-08-06T17:45:00",
"arrivalDate": "2027-08-06T22:40:00",
"travelClass": "ECONOMY",
"flightNumber": "511",
"departureTerminal": "1",
"arrivalTerminal": "1",
"operatingCarrierCode": "XQ",
"marketingCarrierCode": "XQ",
"technicalStops": []
}
]
},
"passengers": [
{
"number": 1,
"type": "adult",
"title": "MR",
"name": "John",
"firstLastName": "Doe",
"gender": "MALE",
"birthDate": "1990-01-15",
"nationalityCountryCode": "FR"
}
],
"selectedBaggage": [...],
"customerContact": { ... },
"fare": { ... }
}
# Get Reservation by Order ID
Retrieve reservation details using the order ID instead of the reservation ID.
GET
https://booking-api.citizenplane.com/v4/reservation?orderId={orderId}
# Query parameters
| Parameter | Type | Status | Description |
|---|---|---|---|
| orderId | string | required | UUID of the order |
Example request
curl 'https://booking-api.citizenplane.com/v4/reservation?orderId=d4e5f6a7-b8c9-4123-abcd-234567890123' \
-H 'Accept: application/json' \
-H 'Authorization: {your_api_key}'
The response format is the same as the Get Reservation by ID endpoint.