Webhook events
Webhook event types with example payloads. The same events can be read with GET /v1/events.
property.updated
The owner changed the listing (a staff-approved change to name, address or type counts too).
{
"id": "evt_981",
"type": "property.updated",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"changed": [
"name"
]
}
}property.media.updated
Photos were added, removed or reordered.
{
"id": "evt_981",
"type": "property.media.updated",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"added": [
"…"
]
}
}property.paused
The property was taken off sale.
{
"id": "evt_981",
"type": "property.paused",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {}
}property.resumed
The property is on sale again.
{
"id": "evt_981",
"type": "property.resumed",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {}
}property.removed
The property was archived.
{
"id": "evt_981",
"type": "property.removed",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {}
}calendar.updated
Nights were closed or opened: by the owner, by any agency's booking or cancellation, by an expired hold, or by an imported calendar. You are not told about your own bookings here; those come as reservation.*. source is owner, agency (never says which), ical or hold_expired.
{
"id": "evt_981",
"type": "calendar.updated",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"closed": [
{
"start": "2027-07-10",
"end": "2027-07-14"
}
],
"opened": [],
"source": "agency"
}
}rates.updated
Price periods or fees changed for these date ranges.
{
"id": "evt_981",
"type": "rates.updated",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"ranges": [
{
"start": "2027-06-15",
"end": "2027-09-15"
}
]
}
}subscription.approved
The owner accepted your request (or an invited owner's property went live).
{
"id": "evt_981",
"type": "subscription.approved",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"subscriptionId": "…"
}
}subscription.rejected
The owner declined your request.
{
"id": "evt_981",
"type": "subscription.rejected",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"subscriptionId": "…"
}
}subscription.revoked
The owner (or you) ended the subscription. Calendar and price access stops at once.
{
"id": "evt_981",
"type": "subscription.revoked",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"subscriptionId": "…",
"by": "owner"
}
}reservation.confirmed
Your reservation was recorded.
{
"id": "evt_981",
"type": "reservation.confirmed",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"reservationId": "…",
"start": "2027-07-10",
"end": "2027-07-14",
"extras": [
{
"key": "pool.heated",
"roomId": null,
"feeMinor": 200000,
"feeMode": "PER_NIGHT",
"quantity": 4,
"totalMinor": 800000
}
]
}
}reservation.modified
Your reservation was changed.
{
"id": "evt_981",
"type": "reservation.modified",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"reservationId": "…",
"start": "2027-07-10",
"end": "2027-07-15"
}
}reservation.cancelled
A reservation of yours was cancelled, by you or by the owner.
{
"id": "evt_981",
"type": "reservation.cancelled",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"reservationId": "…",
"by": "owner",
"start": "2027-07-10",
"end": "2027-07-14"
}
}hold.created
Your hold was placed.
{
"id": "evt_981",
"type": "hold.created",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"reservationId": "…",
"start": "2027-07-10",
"end": "2027-07-14",
"extras": []
}
}hold.confirmed
Your hold became a reservation.
{
"id": "evt_981",
"type": "hold.confirmed",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"reservationId": "…"
}
}hold.expired
Your hold ran out of time; the nights are free again.
{
"id": "evt_981",
"type": "hold.expired",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"reservationId": "…",
"start": "2027-07-10",
"end": "2027-07-14"
}
}hold.extended
Your hold got more time (see POST /v1/holds/{id}/extend).
{
"id": "evt_981",
"type": "hold.extended",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"reservationId": "…",
"holdExpiresAt": "2027-06-01T12:15:00.000Z",
"extensions": 1
}
}waitlist.available
You are first in line and the nights you queued for are free. Only you can hold them until priorityUntil.
{
"id": "evt_981",
"type": "waitlist.available",
"created_at": "2027-06-01T10:00:00.000Z",
"livemode": true,
"api_version": "2026-11-01",
"property_id": "5b1c1f1e-…",
"property_seq": 14,
"data": {
"waitlistId": "…",
"start": "2027-07-10",
"end": "2027-07-14",
"priorityUntil": "2027-06-01T12:05:00.000Z"
}
}