API and webhooks
Connect Gaurify Meet to the tools you already use. Read your bookings, offer your times, and hear about every booking the moment it happens.
API keys
Create a key in the app: Settings, Developer, Create API key. You see it once, so copy it then. Send it on every call:
Authorization: Bearer gm_live_...
Every call is about the key's owner only. A key never reaches anyone else's data. Turn a key off any time in the same place.
Endpoints
All paths start at https://meet.gaurifyhq.com and answer in JSON.
/api/v1/meWho the key belongs to, and their booking page link.
/api/v1/bookingsYour meetings, newest first. Add ?limit=3 for just a few.
/api/v1/availabilityOpen times. Send duration in minutes, and from and to as ISO times.
/api/v1/bookingsBook a meeting on your calendar. Send start, duration, name and email.
/api/v1/hooksSend one event to a URL. Body: target_url and event. Returns its id.
/api/v1/hooksYour hooks and webhooks, with how each one is doing.
/api/v1/hooks/{id}Stop sending to that URL.
/api/v1/hooks/sampleUp to 3 recent bookings, shaped exactly like a delivery. Add ?event= to pick the event.
Events
booking.createdwhen someone books, or you make a meeting.booking.cancelledwhen a meeting is cancelled, by you or your guest.booking.rescheduledwhen a meeting moves to a new time.booking.paidwhen a paid booking's payment comes in.
Each delivery is one JSON POST. id is new for every delivery. data.id is the booking.
{
"id": "6f1c0b3e-2a7d-4c55-9a51-7f0f9d2a8e10",
"event": "booking.created",
"created_utc": "2026-10-07T09:30:00.000Z",
"data": {
"id": "b7d2...",
"start_utc": "2026-10-09T06:00:00.000Z",
"end_utc": "2026-10-09T06:30:00.000Z",
"guest_name": "Asha Rao",
"guest_email": "asha@example.com",
"mode": "meet",
"meet_url": "https://meet.google.com/abc-defg-hij"
}
}
A move adds previous_start_utc and by (guest or host). A payment adds amount in the smallest unit, currency and payment_id.
Check the signature
Every delivery carries X-Gaurify-Signature: the HMAC-SHA256 of the raw body, in hex, made with your secret. X-Gaurify-Event names the event. Check it before you trust the body:
import crypto from "node:crypto";
function isFromGaurify(rawBody, signature, secret) {
const want = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return signature.length === want.length &&
crypto.timingSafeEqual(Buffer.from(want), Buffer.from(signature));
}
Answer with any 2xx within 5 seconds. After 20 failures in a row we pause the hook and tell you in the app.
Use with Zapier or Make: REST hooks
Zapier and Make subscribe a URL when a Zap or scenario turns on, and remove it when it turns off. Map them like this:
- Subscribe:
POST /api/v1/hookswith the platform's target URL and one event. Keep theid. - Unsubscribe:
DELETE /api/v1/hooks/{id}. - Sample data:
GET /api/v1/hooks/sample, with?event=set to the event. - Auth: an API key field, sent as the Bearer header above.
If your hook URL answers 410 Gone, we remove that hook for you.
Questions
Write to hello@gaurifyhq.com. We read every note.