OrbitDocs packages are coming to npm soon. Until then, run it from the GitHub repo →
v1.0.0OpenAPI 3.1.1

Demo: Orbit Travel API

Download OpenAPI Document

Search destinations, flights and seat maps, book and pay, manage saved passengers and Orbit Miles, and receive booking and payment events by webhook or from the Events API.

Every request needs an API key in the x-api-key header, or an OAuth access token from Create an access token in Authorization: Bearer …. Each credential can make 60 requests a minute.

Server
Local
Authentication Required
Your API key. The sample server accepts `otk_test_4f9a2c1b8e7d6a5f`.
x-api-key:
Client Libraries
Shell

Authentication

Create an access token

Create a passenger

List passengers

Get a passenger

Update a passenger

Auth Required

Changes some fields of a passenger; fields you leave out keep their value. Send passport: null to remove the passport, and an empty string for a metadata key to remove that key.

Path Parameters

idstringrequired

Passenger id.

Example: psg_8Fk2Lm

Bodyrequiredapplication/json

dateOfBirthstring · date

Date of birth.

Example: 1990-12-10
passportPassportDto

Passport details; null when not on file yet.

Show child attributes
expiresOnstring · daterequired

Expiry date. Must be valid six months after departure.

Example: 2034-06-30
numberstringrequired

Passport number.

Example: X49201837
issuingCountrystringrequired

Issuing country, ISO 3166-1 alpha-2.

Example: GBPattern: ^[A-Z]{2}$
loyaltyNumberstring | null

Orbit Miles member number, if any.

Example: OT 4410 2291
metadataobject

Up to 20 key-value pairs of your own. Values are strings; send an empty string to remove a key.

Example: {"crmId":"cus_10442","segment":"frequent-flyer"}
firstNamestring

Given name as on the passport.

Example: Ada
lastNamestring

Family name as on the passport.

Example: Lovelace
emailstring · email

Contact email; unique per account.

Example: ada@example.com
nationalitystring

Nationality, ISO 3166-1 alpha-2.

Example: GBPattern: ^[A-Z]{2}$
preferencesUpdateTravelPreferencesDto

Preferences to change; the ones you leave out keep their value.

Show child attributes
seatstring

Preferred seat, used when seats are auto-assigned.

Example: window
mealstring

Meal served on board.

Example: vegetarian
cryosleepboolean

Prefers a cryosleep pod on journeys longer than a year.

Responses

200OK
application/json
dateOfBirthstring · daterequired

Date of birth.

Example: 1990-12-10
passportPassportDtorequired

Passport details; null when not on file yet.

Show child attributes
expiresOnstring · daterequired

Expiry date. Must be valid six months after departure.

Example: 2034-06-30
numberstringrequired

Passport number.

Example: X49201837
issuingCountrystringrequired

Issuing country, ISO 3166-1 alpha-2.

Example: GBPattern: ^[A-Z]{2}$
loyaltyNumberstring | nullrequired

Orbit Miles member number, or null.

Example: OT 4410 2291
metadataobjectrequired

Up to 20 key-value pairs of your own. Values are strings; send an empty string to remove a key.

Example: {"crmId":"cus_10442","segment":"frequent-flyer"}
createdAtstring · date-timerequired

When the passenger was saved.

Example: 2026-10-03T12:00:00Z
updatedAtstring · date-timerequired

When the passenger last changed.

Example: 2026-10-04T08:15:00Z
idstringrequired

Passenger id.

Example: psg_8Fk2Lm
firstNamestringrequired

Given name as on the passport.

Example: Ada
lastNamestringrequired

Family name as on the passport.

Example: Lovelace
emailstringrequired

Contact email.

Example: ada@example.com
nationalitystringrequired

Nationality, ISO 3166-1 alpha-2.

Example: GB
preferencesTravelPreferencesDtorequired

Seat and meal preferences.

Show child attributes
seatstringrequired

Preferred seat, used when seats are auto-assigned.

Example: window
mealstringrequired

Meal served on board.

Example: vegetarian
cryosleepbooleanrequired

Prefers a cryosleep pod on journeys longer than a year.

Headers
X-RateLimit-Limitinteger

Requests allowed per minute for this credential.

Example: 60
X-RateLimit-Remaininginteger

Requests left in the current window.

Example: 59
X-RateLimit-Resetinteger

When the window resets, in Unix seconds.

Example: 1949398800
400The request is invalid: a parameter or body field failed validation.
application/json
statusCodeintegerrequired

HTTP status code, repeated in the body.

Example: 404
messagestring | string[]required

What went wrong, for people. Validation failures list one entry per problem. Do not branch on this text.

Example: Booking not found
errorstring

Short name of the status.

Example: Not Found
401Authentication is missing or invalid.
application/json
statusCodeintegerrequired

HTTP status code, repeated in the body.

Example: 404
messagestring | string[]required

What went wrong, for people. Validation failures list one entry per problem. Do not branch on this text.

Example: Booking not found
errorstring

Short name of the status.

Example: Not Found
403Authenticated, but not allowed to do this.
application/json
statusCodeintegerrequired

HTTP status code, repeated in the body.

Example: 404
messagestring | string[]required

What went wrong, for people. Validation failures list one entry per problem. Do not branch on this text.

Example: Booking not found
errorstring

Short name of the status.

Example: Not Found
404No passenger with this id.
application/json
statusCodeintegerrequired

HTTP status code, repeated in the body.

Example: 404
messagestring | string[]required

What went wrong, for people. Validation failures list one entry per problem. Do not branch on this text.

Example: Booking not found
errorstring

Short name of the status.

Example: Not Found
409Another passenger already has this email.
application/json
statusCodeintegerrequired

HTTP status code, repeated in the body.

Example: 404
messagestring | string[]required

What went wrong, for people. Validation failures list one entry per problem. Do not branch on this text.

Example: Booking not found
errorstring

Short name of the status.

Example: Not Found
429Too many requests: more than 60 a minute. Wait `Retry-After` seconds, then retry.
application/json
statusCodeintegerrequired

HTTP status code, repeated in the body.

Example: 404
messagestring | string[]required

What went wrong, for people. Validation failures list one entry per problem. Do not branch on this text.

Example: Booking not found
errorstring

Short name of the status.

Example: Not Found
Headers
Retry-Afterinteger

Seconds to wait before retrying.

Example: 42
X-RateLimit-Limitinteger

Requests allowed per minute for this credential.

Example: 60
X-RateLimit-Remaininginteger

Requests left in the current window.

Example: 59
X-RateLimit-Resetinteger

When the window resets, in Unix seconds.

Example: 1949398800
500Something failed on the server. Retry with backoff.
application/json
statusCodeintegerrequired

HTTP status code, repeated in the body.

Example: 404
messagestring | string[]required

What went wrong, for people. Validation failures list one entry per problem. Do not branch on this text.

Example: Booking not found
errorstring

Short name of the status.

Example: Not Found
PATCH/v1/passengers/{id}
curl http://localhost:3010/v1/passengers/psg_8Fk2Lm \
  --request PATCH \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "dateOfBirth": "1990-12-10",
  "passport": {
    "expiresOn": "2034-06-30",
    "number": "X49201837",
    "issuingCountry": "GB"
  },
  "loyaltyNumber": "OT 4410 2291",
  "metadata": {
    "crmId": "cus_10442",
    "segment": "frequent-flyer"
  },
  "firstName": "Ada",
  "lastName": "Lovelace",
  "email": "ada@example.com",
  "nationality": "GB",
  "preferences": {
    "seat": "window",
    "meal": "vegetarian",
    "cryosleep": true
  }
}'
{
  "dateOfBirth": "1990-12-10",
  "passport": {
    "expiresOn": "2034-06-30",
    "number": "X49201837",
    "issuingCountry": "GB"
  },
  "loyaltyNumber": "OT 4410 2291",
  "metadata": {
    "crmId": "cus_10442",
    "segment": "frequent-flyer"
  },
  "createdAt": "2026-10-03T12:00:00Z",
  "updatedAt": "2026-10-04T08:15:00Z",
  "id": "psg_8Fk2Lm",
  "firstName": "Ada",
  "lastName": "Lovelace",
  "email": "ada@example.com",
  "nationality": "GB",
  "preferences": {
    "seat": "window",
    "meal": "vegetarian",
    "cryosleep": true
  }
}

Delete a passenger

Models

BankTransferInstructionsDto
BankTransferPaymentRequestDto
BoardingGroup Boarding group, called in order.
BoardingPassDto
BoardingPassFormat
BoardingPassPassengerDto
BookingDto
BookingListDto
BookingStatus Where the booking is in its life.
CabinClass Cabin.
CabinSeatMapDto
CancelBookingDto
CardBrand Card network.
CardDetailsDto
CardPaymentRequestDto
Climate
CreateBookingDto
CreatePassengerDto
CreateRedemptionDto
CreateRefundDto
CreateSeatHoldDto
CreateWebhookEndpointDto
DestinationDto
DestinationListDto
DocumentKind What the document is, detected from the scan.
DocumentStatus Review status. Boarding needs a verified passport.
EventDataDto
EventDto
EventListDto
FareDto
FlightDto
FlightListDto
GrantType Always `client_credentials`.
LegacyFlightSearchDto
LoyaltyAccountDto
LoyaltyTier Current tier, from lifetime points.
LoyaltyTransactionDto
LoyaltyTransactionListDto
LoyaltyTransactionType
MealPreference Meal served on board.
OAuthErrorCode Machine-readable error code.
OAuthErrorDto
PageInfoDto
PassengerDto
PassengerListDto
PassengerProfileDto
PassportDto
PaymentDto
PaymentMethodDetailsDto
PaymentMethodType How the payment was made. Exactly one of the objects below is set.
PaymentStatus Where the payment is in its life.
RedemptionDto
RedemptionStatus Redemptions complete immediately.
RefundDto
RefundReason Why the money went back.
RefundStatus Bank transfer refunds stay `pending` for a few days.
RewardType Reward to buy. Costs: `cabin_upgrade` 40,000, `booking_credit` 10,000 ($100 off), `extra_baggage` 8,000, `lounge_access` 5,000.
SeatDto
SeatFeature What makes this seat different.
SeatHoldDto
SeatHoldStatus Active until it is used on a booking or expires.
SeatMapDto
SeatPreference Preferred seat, used when seats are auto-assigned.
SeatPriceDto
SeatRowDto
SeatStatus Whether the seat can be held.
TestWebhookEndpointDto
TierProgressDto
TokenRequestDto
TokenResponseDto
TravelDocumentDto
TravelDocumentListDto
TravelPreferencesDto
UpdateBookingDto
UpdatePassengerDto
UpdateTravelPreferencesDto
UploadDocumentDto
WalletPaymentRequestDto
WalletType Wallet the token comes from.
WebhookDeliveryDto
WebhookDeliveryStatus `succeeded` when your endpoint answered with a 2xx status.
WebhookEndpointDto
WebhookEndpointListDto
WebhookEvent