Booking or visitor lifecycle event delivered to your registered listener URL

Booking or visitor lifecycle event delivered to your registered listener URL. Always HMAC-signed (X-Keyspace-Signature). If your endpoint requires its own auth, Keyspace also sends a credential per the webhook's authStrategy: 'signature-only' (none), 'bearer' (Authorization: Bearer ), 'custom-header' (one or more : headers), or 'jwt' (Authorization: Bearer <short-lived HS256 JWT signed with the shared secret; claims iss=keyspace, aud=projectId, jti=delivery id, exp>).

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Body POSTed to a registered partner webhook listener. Covers booking (ROOM_/DESK_) and visitor (VMS_) lifecycle events on one channel. Headers: X-Keyspace-Event (type), X-Keyspace-Delivery (= id, unique per delivery — de-duplicate on it), X-Keyspace-Timestamp (epoch ms), X-Keyspace-Signature: sha256=HEX(HMAC-SHA256(secret, timestamp + '.' + rawBody)) computed over the exact raw bytes. Respond 2xx within 10s; retries: 5 attempts exponential from ~60s; 20 consecutive exhausted deliveries auto-disable the webhook. data is a change signal — for booking events fetch authoritative state via GET /meetings/{id}; visitor events are terminal (no partner GET). data never carries a meeting pinCode/tokens, EXCEPT VMS_INVITE_SENT which deliberately includes qrCardCode (the visitor's access QR, to relay to the invitee — treat as a credential). VMS_INVITE_SENT / VMS_HOST_CANCELLED data.endDateTime is null when the invite has no end time (valid the whole start day). Tolerate unknown data fields.

Response Body

Example Requests

POST/bookingLifecycle