Public booking

Book a slot: calendar event + Meet link (Google host) or Teams link (Teams-enabled Microsoft 365 work/school host) + invites

Anonymous callers pass Turnstile and a per-IP limit (20/h); signed-in callers and PAT holders skip both. The slot is re-validated with fresh data and guarded in one D1 transaction against double booking. The event goes to the owner’s calendar (or, for an "any" team link, the assignee’s). The invitee and guests get reminder emails at the link’s reminders offsets (24 h and 1 h by default); the invitee’s carries the manage link.

post/api/public/{handle}/{slug}/book

Request

  • Base URL: https://whenmeet.me
  • URL: https://whenmeet.me/api/public/{handle}/{slug}/book
  • Auth: one of:
    • HTTP bearer
    • API key in cookie __Host-session
    • none

Path parameters

handlestring required

Booking nickname or team handle: lower-case, 3–40 chars of [a-z0-9-] (the part after whenmeet.me/@). Nicknames and team handles share one namespace.

slugstring required

Link type slug, 1–60 chars of [a-z0-9-].

Request body

startsAtinteger required

A slot start from …/slots.

namestring required
emailstring email required
answersobject

Keyed by question id.

notesstring
tzstring

Invitee IANA zone (email formatting).

utmobject

Up to 10 utm_* keys (^utm_[a-z_]{1,20}$); malformed ones are dropped.

turnstileTokenstring

Required for anonymous callers when Turnstile is configured.

Response

Booked.

bookingIdstring
meetingIdstring
startsAtinteger

unix ms

endsAtinteger

unix ms

titlestring
conferenceUrlstring nullable
conference'meet' | 'teams' | 'null' nullable

The video the booking actually got.

meetingUrlstring

Shareable meeting page (/m/<id>).

manageUrlstring

Invitee cancel / reschedule link (/booking/<id>?t=<token>). Keep it private.

Changes

No recorded changes to this operation across all 1 revision of this API.