• VillaSlotDocumentation
  • Introduction
  • Getting Started
  • API
    • Discovery
      • GETGet my context
    • Villas
      • GETList villas
      • POSTCreate a villa
      • GETGet a villa
      • PATCHRename a villa
      • POSTArchive a villa
      • POSTUpload a villa photo
      • GETGet opening hours
      • PUTReplace opening hours
      • GETGet the rate grid
      • PUTReplace the rate grid
      • GETGet availability
    • Bookings
      • GETList bookings over a period
      • POSTCreate a booking
      • GETGet a booking
      • POSTConfirm a booking
      • POSTComplete a booking
      • POSTCancel a booking
      • POSTReschedule a booking
    • Customers
      • GETList customers
      • POSTCreate a customer
      • POSTImport a batch of customers
      • GETGet a customer
      • PATCHUpdate a customer
    • Booking settings
      • GETGet booking settings
      • PATCHUpdate booking settings
  1. Documentation
  2. API
  3. Bookings
  4. Confirm a booking
Buydocschangelogsdemocommunity

Confirm a booking

PreviousGet a bookingNextComplete a booking
On this page
AuthorizationRequest bodyExampleResponseWhat it refuses

POST /api/v1/bookings/{bookingId}/confirm

Confirms a hold. This is not a label change: between the hold and its confirmation someone may have taken the slot, so availability is checked again. The booking is excluded from its own check.

Creates no payment and does not touch the financial status: a confirmed booking can be UNPAID.

Authorization

Role in the organizationThis endpoint
ownerAllowed
adminAllowed
memberAllowed

Request body

None.

Example

bash
curl -X POST -H "x-api-key: $VILLASLOT_API_KEY" \
  "https://villaslot.app/api/v1/bookings/5b2c…/confirm"

Response

  • 200 OK — the booking, status: "CONFIRMED".

What it refuses

  • 409 Conflict — the slot was taken in the meantime (OVERLAP), the hold expired (HOLD_EXPIRED) or its status changed under you (STATUS_CHANGED). detail says which, and the three call for different next moves: a taken slot means pick another, an expired hold means the slot is free again.
  • 422 Unprocessable Entity — the booking is not a hold.
  • 401 Unauthorized — missing or invalid key, or a key whose bearer left the organization.
  • 404 Not Found — unknown id, or an id belonging to another organization. The two are deliberately indistinguishable.
  • 429 Too Many Requests — over 120 requests in a minute for this key.