Skip to main content

Method

POST /v1/bookings

Body Parameters

string
Custom booking code/reference
string
Initial status (pending by default)
string
Initial payment status
string
Initial fulfillment status
string
Sales channel
string
Source system
string
ISO currency (e.g. EUR)
number
Adults count
number
Children count
number
Infants count
number
Number of rooms (if applicable)
string
Existing person ID for billing contact (TypeID with ppl prefix)
string
Existing organization ID (TypeID with org prefix)
string
Public notes
string
Internal notes
object
Custom attributes
object
Arbitrary metadata
string
Preferred language
string
required
Product to book (TypeID with prod prefix)
string
required
Departure to book (TypeID with dept prefix)
string
Override rate plan (TypeID with rate prefix)
string
Addon product identifier (TypeID with prad prefix)
number
Addon quantity
string
Room category key
number
Occupancy per room
number
Rooms requested
string
Coupon or promotion code
string
Quote identifier issued by Voyant (TypeID with qte prefix)

Attributes and metadata

Voyant stores two JSON blobs on every booking: attributes, which the platform extends with workflow state, and metadata, which is left untouched for your own identifiers.
  • attributes — send a JSON object with workspace-specific context (for example, the answers from a booking form). The booking service automatically merges in a pricingSnapshot that captures the quote that was used to price the booking.
  • metadata — supply any arbitrary JSON you need to round-trip (CRM references, analytics tags, third-party payloads). Voyant never mutates this object.
Example
If you omit attributes, Voyant still persists a pricingSnapshot. When you do send an object, avoid overwriting that key unless you intend to replace it.
Totals are calculated on the server from the pricing payload. The booking response includes the computed subtotal, taxes, discounts, and total amount. Items and passengers are created via separate endpoints after the booking is created:
  • POST /v1/bookings/:id/items — add items
  • POST /v1/bookings/:id/passengers — upsert passengers (by personId)

Headers

string
required
Bearer token (e.g. Authorization: Bearer YOUR_API_KEY)
string
application/json