API reference
Bookings
Create bookings from price-checked quotes, follow them to confirmation, and manage them afterwards.
Create a booking
/api/v1/bookingsBooks 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.
| Field | Description |
|---|---|
quoteIdstringrequired | A price-checked quote (rateQuoteId), checked within the last 10 minutes. |
travelersarrayrequired | One per guest searched. See traveller fields. |
paymentMethod"credit"required | Pay from your agency's credit — the only payment method available through the API. |
changesAcknowledgedboolean | Required as true when the price-check reported a price or policy change the traveller accepted. |
packageRateAcknowledgedboolean | Required as true for package rates you are selling inside a package. |
holdboolean | Reserve now, pay later. Hotels only, fully refundable rates only. |
bookingAnswersobject | Answers to details.bookingQuestions, keyed by code or CODE:n. |
panNumberstring | Indian PAN (ABCDE1234F), when the quote's details.panRequired is true. |
hotelPreferencesobject | Hotels 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. |
{
"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
/api/v1/bookingsEvery booking your agency has made.
| Query | Description |
|---|---|
limitinteger | 1–100. Default 50. |
cursorstring | data.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. |
qstring | Matches 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. |
{
"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
/api/v1/bookings/:bookingId| Field | Description |
|---|---|
orderobject | orderRef, 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. |
lineItemsarray | One 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. |
bookedHotelobject | Hotel name, address, city and country, for hotel bookings. |
cancellationPolicyobject | The terms the booking was sold on: refundable, deadlines[] and, when they apply, currentRefundability, nonrefundableDateRanges, perStayAmountsNonRefundable and deadlinesWithheld. See Cancellations. |
importantInformationobject | Property or operator information travellers must see. |
priceSummaryobject | Display-ready totals. |
paymentsarray | Payment records for the booking. |
earningsobject | What your agency earns on this booking. |
Refresh a pending booking
/api/v1/bookings/:bookingId/refresh-statusFor 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
/api/v1/bookings/:bookingId/payPays 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
/api/v1/bookings/:bookingId/cancelCancels 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.
{
"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
/api/v1/bookings/:bookingId/voucherVoucher data for hotel bookings: orderRef, stay, hotelConfirmationNumber, cancellationPolicy, excludedTaxes, policies, importantInformation, priceSummary.
/api/v1/bookings/:bookingId/voucher/documentA printable HTML voucher — not JSON-enveloped. Add ?prices=without to hide prices.
Email the voucher to a client
/api/v1/bookings/:bookingId/email-clientOnly confirmed, cancelled and refunded bookings; any other state returns 400.
| Field | Description |
|---|---|
toemail | Recipient. 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–80 | Sender name shown to your client. |
notestring, up to 2,000 | A personal message above the voucher. |
replyToemail | Where your client's replies go. Defaults to the reply-to address on your agency profile. |
withoutPricesboolean | Leave 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.