API reference

Bookings

Create bookings from price-checked quotes, follow them to confirmation, and manage them afterwards.

Create a booking

POST/api/v1/bookingsIdempotency-Key · 20 / min

Books a price-checked quote and pays from your agency's credit. Returns 201. Read data.state: it can be confirmed, supplier_pending, held, failed or manual_review.

FieldDescription
quoteIdstringrequiredA price-checked quote (rateQuoteId), checked within the last 10 minutes.
travelersarrayrequiredOne per guest searched. See traveller fields.
paymentMethod"credit"requiredPay from your agency's credit — the only payment method available through the API.
changesAcknowledgedbooleanRequired as true when the price-check reported a price or policy change the traveller accepted.
packageRateAcknowledgedbooleanRequired as true for package rates you are selling inside a package.
holdbooleanReserve now, pay later. Hotels only, fully refundable rates only.
bookingAnswersobjectAnswers to details.bookingQuestions, keyed by code or CODE:n.
panNumberstringIndian PAN (ABCDE1234F), when the quote's details.panRequired is true.
hotelPreferencesobjectHotels only: specialRequest (up to 500 characters) for the booking, and rooms[] with roomIndex, smoking and specialRequest per room. Passed on where the rate supports them; requests, not guarantees. See Hotel special requests.
Response · 201
{
  "data": {
    "bookingId": "66f1d2c4e4b0c1d2e3f4b010",
    "orderRef": "RV-2026-4CD5ADB2",
    "state": "confirmed"
  },
  "meta": {},
  "error": null
}

Errors: see Bookings and Payment and credit on the Errors page.

List bookings

GET/api/v1/bookings

Every booking your agency has made.

QueryDescription
limitinteger1–100. Default 50.
cursorstringdata.nextCursor from the previous page.
state"all" | "confirmed" | "held" | "cancelled" | "failed"cancelled includes cancellation in progress and refunded.
trip"all" | "upcoming" | "traveling" | "past"By travel dates. With trip set and no state, cancelled bookings — including those being cancelled or refunded — are left out unless you send status=cancelled.
status"all" | "active" | "cancelled"cancelled is every booking cancelled, being cancelled or refunded; active is everything else. Unknown values are treated as all.
qstringMatches order reference, lead guest, hotel name or the inventory source's booking reference (firstItem.confirmation). Longer than 100 characters is cut to 100.
sort"desc" | "asc"By creation time. Default newest first.
Response · 200 (abridged)
{
  "data": {
    "rows": [
      {
        "_id": "66f1d2c4e4b0c1d2e3f4b010",
        "orderRef": "RV-2026-4CD5ADB2",
        "state": "confirmed",
        "totalSell": { "amountMinor": 51120, "currency": "USD" },
        "firstItem": {
          "productType": "hotel",
          "hotelName": "Example Marina Hotel",
          "checkIn": "2026-11-10",
          "checkOut": "2026-11-13",
          "confirmation": "4471902"
        },
        "createdAt": "2026-09-10T12:08:41Z"
      }
    ],
    "nextCursor": null
  },
  "meta": {},
  "error": null
}

Get a booking

GET/api/v1/bookings/:bookingId
FieldDescription
orderobjectorderRef, state, travelers, paymentMethod, totalSell, agencyCommission, held (paymentDeadline, cancellationDeadline) for holds, and failureReason, which may be present on failed bookings — a machine code such as supplier_rejected; don't parse it.
lineItemsarrayOne per product: productType, state, supplierConfirmationId, sell, and details. For hotels, the property's number is in details.hotelConfirmationRef (or details.hotelConfirmationRefs, one per room); hotelConfirmationNumber is set only when our operations team records one. For flights, supplierConfirmationId is the airline's booking reference when known; flights may also carry details.pnr, details.airlinePnr, details.tickets[] (name, ticketNo, airlinePnr) and details.ticketingStatus — see Flights. Activities and transfers carry details.supplierVouchers when the operator issues one; a round-trip transfer booked as one booking may carry details.transferLegs.
bookedHotelobjectHotel name, address, city and country, for hotel bookings.
cancellationPolicyobjectThe terms the booking was sold on: refundable, deadlines[] and, when they apply, currentRefundability, nonrefundableDateRanges, perStayAmountsNonRefundable and deadlinesWithheld. See Cancellations.
importantInformationobjectProperty or operator information travellers must see.
priceSummaryobjectDisplay-ready totals.
paymentsarrayPayment records for the booking.
earningsobjectWhat your agency earns on this booking.

Refresh a pending booking

POST/api/v1/bookings/:bookingId/refresh-status

For supplier_pending bookings: checks with the inventory source and returns bookingId, orderRef and the current state. No body. Poll every 15 seconds at most.

Pay for a hold

POST/api/v1/bookings/:bookingId/payIdempotency-Key

Pays a held booking before its payment deadline. Body: { "paymentMethod": "credit" }. Returns the booking's new state.

Errors: 409 booking_invalid_transition (not held), 402 credit_limit_exceeded.

Cancel a booking

POST/api/v1/bookings/:bookingId/cancelIdempotency-Key

Cancels a confirmed or held booking. No body is needed. For a round-trip transfer booked as one booking you can send { "transferCancelScope": "departure" } or "return" to cancel one leg; the default, "whole", cancels everything — see Transfers. refund.status is refunded, no_refund_due or manual_review.

Response · 201
{
  "data": { "bookingId": "66f1d2c4e4b0c1d2e3f4b010", "state": "refunded", "refund": { "status": "refunded" } },
  "meta": {},
  "error": null
}

Errors: 409 booking_invalid_transition, 409 idempotency_in_progress.

The state in the response is the state at that moment; a booking with nothing to refund can report cancelled and then move to refunded. Read GET /bookings/:bookingId for the final state.

Get the voucher

GET/api/v1/bookings/:bookingId/voucher

Voucher data for hotel bookings: orderRef, stay, hotelConfirmationNumber, cancellationPolicy, excludedTaxes, policies, importantInformation, priceSummary.

GET/api/v1/bookings/:bookingId/voucher/document

A printable HTML voucher — not JSON-enveloped. Add ?prices=without to hide prices.

Email the voucher to a client

POST/api/v1/bookings/:bookingId/email-client10 / min

Only confirmed, cancelled and refunded bookings; any other state returns 400.

FieldDescription
toemailRecipient. Defaults to the lead traveller's email.
ccemail[]Copies. to and cc together can hold at most 50 addresses once duplicates are removed.
agencyNamestring, 1–80Sender name shown to your client.
notestring, up to 2,000A personal message above the voucher.
replyToemailWhere your client's replies go. Defaults to the reply-to address on your agency profile.
withoutPricesbooleanLeave prices off the voucher.

Returns who it was sent to and pdfAttached. The PDF is attached only when it renders; otherwise the voucher is sent in the email body alone.