# 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:

  1. Search - Find available offers matching travel criteria
  2. Get Offer - Get detailed pricing for a specific flight combination
  3. Get Baggage - Retrieve available baggage options for an offer
  4. Get Fares - Retrieve all available fares for an offer
  5. Create Order - Create an order with passenger details and selected baggage
  6. Confirm Order - Confirm the order and trigger the booking
  7. Get Order - Retrieve the latest persisted order state
  8. 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
email 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.