create_booking_link
Make a public booking link (usecaddie.app/meet/…): anyone with it can book a call on the user's calendar in the hours given. Only when the user asked for one. From an agent's own turn inside Caddie it's refused: ask the user. Returns its URL.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | bookable until, "HH:MM" in the link's timezone (tz) (default 17:00) | |
| tz | No | the timezone its hours are in, IANA ("Asia/Kolkata"); a new link's default is the user's. Changed, the hours keep their clock times in the new zone | |
| days | No | the days these hours are for, "mon"…"sun" (new link: default mon to fri; a change: only these days change, the others keep their hours) | |
| ends | No | YYYY-MM-DD: the last day it can be booked ("never" to remove) | |
| from | No | bookable from, "HH:MM" in the link's timezone (tz; a new link's is the user's) (default 09:00) | |
| slug | No | the end of its URL (usecaddie.app/meet/<handle>/<slug>): letters, numbers and dashes; "" to follow the title again. The old address still leads there | |
| hosts | No | a team link: people from one of the user's workspaces host it. mode "any": a time shows when any one of them is free and the booking goes on that person's calendar, shared out evenly; "all": only when the user and every required person are free, all invited. everyone: the whole workspace, newcomers too; else people (names or emails). optional (mode all): invited, but their calendars don't decide the times. {"workspace": ""} makes it the user's alone again. Only what you give changes. From an agent's own turn inside Caddie it's refused: ask the user | |
| place | No | ||
| title | Yes | ||
| ranges | No | instead of from/to, for a split day: [["09:00","13:00"],["14:00","18:00"]] in the link's timezone (tz); [] makes those days unbookable | |
| account | No | which connected Google account's calendar bookings go on, by its email ("" for the first) | |
| minutes | Yes | how long a call is, 5 to 480 | |
| location | No | a Google Meet (default), a phone call, or a place (place: where) | |
| max_days | No | up to this many days ahead, 1 to 60 (default 30) | |
| questions | No | the booking form's own questions (name and email are always asked), in order; replaces them all ([] for none). Answers go on the calendar event | |
| reminders | No | reminder emails to the guest a day and an hour before; only what you give changes. *_subject and *_body replace Caddie's words ("" for Caddie's); {name}, {title}, {owner}, {when} and {place} are filled in | |
| description | No | a line or two shown on the booking page | |
| max_per_day | No | at most this many bookings a day (0: no limit) | |
| notice_hours | No | at least this many hours ahead (default 4) | |
| open_routines | No | routines or habits (names or ids, list_habits) people can book over; replaces the list ([] for none) | |
| block_routines | No | the user's routines and habits (lunch, gym, sleep) block bookings (default true) | |
| buffer_minutes | No | free time kept around each call |