Reservations
Retrieve one reservation
GET /api/v1/reservations/{id}
The booking with its guest, the property’s identity, the money as agreed at booking time, and the current agreement if there is one. dashboardUrl opens the same record in the dashboard, for an alert email or a back-office link.
Path parameters
| Parameter | In | Type | Description |
|---|---|---|---|
| id required | path | string | The reservation id, from the list or a webhook. |
Response
200 { reservation: Reservation }
Reservation fields
| Field | Type | Description |
|---|---|---|
| id | string | Opaque. |
| status | ReservationStatus | |
| propertyId | string | |
| property | PropertyIdentity | |
| guest | Guest | |
| checkIn | date | YYYY-MM-DD |
| checkOut | date | Exclusive: the handover is at noon that day. YYYY-MM-DD |
| nights | integer | Check-out minus check-in. |
| adults | integer | null | |
| children | integer | null | |
| infants | integer | null | |
| pets | boolean | |
| pricing | object | Snapshotted when the booking was made. A later rate change on the listing never rewrites an agreed booking. |
| currency | "EUR" | |
| rentCents | integer | null | Monthly rent as agreed. Integer euro-cents. |
| utilitiesCents | integer | null | Monthly utilities as agreed. Integer euro-cents. |
| furnitureCents | integer | null | Monthly furniture fee as agreed. Integer euro-cents. |
| monthlyCents | integer | null | Rent + utilities + furniture, when all three are set. Integer euro-cents. |
| depositCents | integer | null | Security deposit as agreed. Integer euro-cents. |
| minStayMonths | integer | null | What the agreement states as the minimum term. |
| requiresContract | boolean | Whether this booking needs a signed agreement before it counts as confirmed. Resolved once, at booking time. |
| invoicePaid | boolean | |
| agreement | Agreement | null | |
| dashboardUrl | url | Opens the same record in the dashboard, for an alert email or a back-office link. |
| inquiredAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| reservedAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| confirmedAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| cancelledAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| createdAt | timestamp | ISO 8601 |
| updatedAt | timestamp | The incremental-sync key: see updatedSince on the list. ISO 8601 |
Errors
Every failure is { error, message }; see Errors. A missing or expired bearer is a 401 on every endpoint
but the token exchange.
| Status | error | When |
|---|---|---|
| 404 | not_found | Unknown to your organisation. |
Notes
pricingis snapshotted when the booking is made, so a later rate change on the listing never rewrites an agreed booking.monthlyCentsis rent + utilities + furniture when all three are set.nightsis check-out minus check-in.minStayMonthsis what the agreement states as the minimum term.requiresContractsays whether this booking needs a signed agreement before it counts as confirmed; it is resolved once at booking time.- The lifecycle stamps (
inquiredAt,reservedAt,confirmedAt,cancelledAt) record when a status was entered and are never cleared.