Record a reservation

The event that X was purchased. Occupies the book. Idempotent per `externalId`. Defaults to `confirmed` — an external system reporting a sale is not placing a hold.

POST
/v1/reservations

The event that X was purchased. Occupies the book. Idempotent per externalId. Defaults to confirmed — an external system reporting a sale is not placing a hold.

Authorization

AuthorizationBearer <token>

The organization API key, sent as Authorization: Bearer <key>.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

channel?|

Commercial channel that sold this stay (eden, or any slug you configured as an allocation; case-insensitive). Omit for the organization's own share.

customerId?string|null
externalId?|

Your id for this sale. Idempotent per organization: a retry with the same value returns the existing reservation.

Length1 <= length
guestName?string|null
nights?integer

Nights occupied, inclusive of the start day. Four nights from 2026-09-25 occupy 25, 26, 27 and 28. Defaults to 1 (a single slot also uses 1).

Range1 <= value
notes?string|null
occupancyStart*string

First occupied calendar day.

Match^\d{4}-\d{2}-\d{2}$
opportunityId?string|null
pax?|
Range1 <= value
poolId*string

The occupancy pool this sale occupies.

quantity?integer
Range1 <= value
slotKey?|

Time-slot key for seat_slot pools (e.g. 11:00). Empty for night stays.

status?string

confirmed when the sale already happened (Eden, the door, a payment). hold parks a place for 30 minutes. Defaults to confirmed on this API — an external system reporting a purchase is not placing a hold.

Value in

  • "hold"
  • "confirmed"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/reservations" \  -H "Content-Type: application/json" \  -d '{    "occupancyStart": "string",    "poolId": "string"  }'
{  "allocationId": "string",  "cancelledAt": "2019-08-24T14:15:22Z",  "channel": "string",  "confirmedAt": "2019-08-24T14:15:22Z",  "createdAt": "2019-08-24T14:15:22Z",  "customerId": "string",  "externalId": "string",  "guestName": "string",  "holdExpiresAt": "2019-08-24T14:15:22Z",  "id": "string",  "notes": "string",  "occupancyNights": 0,  "occupancyStart": "string",  "opportunityId": "string",  "pax": 0,  "poolId": "string",  "quantity": 0,  "slotKey": "string",  "source": "platform",  "status": "hold",  "updatedAt": "2019-08-24T14:15:22Z"}