inquiry.updated

An inquiry moved: its status, dates, guest count, or the reservation it became.

When it fires

Fires whenever the inquiry changes, whether the host acted through the API or in the Airbnb app, or the guest booked. status is one of open, pre_approved, special_offer_sent, booked, expired, declined or not_possible, and previousAttributes names exactly what changed. When status becomes booked, reservationId is the new reservation, which also arrives through reservation.created.

Payload

Every delivery uses the same outer envelope (event, eventId, apiVersion, timestamp, data). Dedupe on eventId — it stays stable across retries and replays, while the X-Repull-Delivery-Id header changes on every attempt.

{
  "event": "inquiry.updated",
  "eventId": "3f1c9a2e-8b7d-4c6a-9e0f-1a2b3c4d5e6f",
  "apiVersion": "2026-04",
  "timestamp": "2026-05-01T12:34:56.000Z",
  "data": {
    "object": {
      "id": "25173",
      "conversationId": "164743",
      "listingId": "23892",
      "customerId": "1",
      "channel": "airbnb",
      "status": "pre_approved",
      "checkIn": "2026-10-23",
      "checkOut": "2026-11-11",
      "guests": {
        "total": 2,
        "adults": 2,
        "children": 0,
        "infants": 0,
        "pets": 0
      },
      "expectedPayout": {
        "amount": 2152.6,
        "currency": "USD"
      },
      "reservationId": null,
      "relayedBy": null,
      "respondBy": "2026-09-23T17:40:38.725Z",
      "respondedAt": "2026-09-22T18:02:11.000Z",
      "createdAt": "2026-09-22T17:40:39.000Z",
      "updatedAt": "2026-09-22T18:02:11.000Z"
    },
    "previousAttributes": {
      "status": "open"
    },
    "occurredAt": "2026-09-22T18:02:11.000Z",
    "revision": "2026-09-22T18:02:11.000Z"
  }
}

Verifying signatures

Every delivery includes a timestamped X-Repull-Signature header of the form t=<unix_ts>,v1=<hex>, where v1 is HMAC-SHA256(signing_secret, `${t}.${raw_body}`). Verify it before processing — see Verify Signatures for full Node.js and Python examples.

Use the raw body

Sign the raw request body exactly as received, not a re-stringified JSON object. Re-serialisation can reorder keys or change whitespace and break the signature.

Common patterns

  • Watch for status: "booked" to link the conversation to its reservation through reservationId.
  • previousAttributes holds the old value of every field that changed, so you can tell a date change from a status change without a diff.
  • An inquiry whose time simply runs out, with no update from Airbnb, fires no event. GET /v1/inquiries still reports it as expired.

Tip: Acknowledge with a 2xx status within 10 seconds. Failed deliveries are retried up to 5 times with exponential backoff.Webhook reliability →

AI