25 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
Book a meeting
booking.book_appointmentwriteconfirm
Books a real slot on an event type's calendar for an invitee. FREE EVENT TYPES are confirmed immediately: the invitee and the host are emailed/texted a confirmation from the organization's OWN Mailgun/Twilio, reminders are scheduled, and the contact may be enrolled in 'appointment booked' automations. PAID EVENT TYPES (require_payment on, with a price) ARE NOT CONFIRMED HERE — exactly as on the public booking page, the slot is held unconfirmed, nothing is sent to the invitee, and this returns `checkout_url`: a Stripe Checkout link on the business's own account. Give that link to the invitee; the meeting is only confirmed, and the confirmation only sent, once Stripe reports them paid. The requested time is re-validated against live availability, so it fails if the slot was just taken; a round-robin host is assigned automatically. Matches or creates the contact from the invitee's email/phone. Provide the start exactly as one of the ISO UTC starts returned by booking.get_availability.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
event_type_id
string (uuid)
required
The event type to book.
start
string (date-time)
required
The slot's start as an ISO 8601 UTC timestamp — one of the starts from booking.get_availability.
invitee_name
string
optional
The invitee's full name.
invitee_email
string (email)
optional
The invitee's email address. Provide this or invitee_phone.
invitee_phone
string
optional
The invitee's phone number, any format. Provide this or invitee_email.
invitee_timezone
string
optional
The invitee's IANA timezone, e.g. 'America/New_York'. Used in their confirmation. Defaults to the event's timezone.
answers
map of string → object
optional
Answers to the event type's booking-form questions, keyed by each field's `key`.
Over MCP the same operation is the tool booking_book_appointment at https://app.chirply.io/api/mcp, same bearer token, same input.
Cancel an appointment
booking.cancel_appointmentwriteconfirmadmin only
Cancels a booked appointment and immediately notifies the invitee of the cancellation by email/SMS from the organization's own Mailgun/Twilio, drops its pending reminders, and fires 'appointment canceled' automations. This frees the slot for someone else. Owners and admins only. To move an appointment to a new time instead, use booking.reschedule_appointment.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
appointment_id
string (uuid)
required
The appointment to cancel.
reason
string
optional
Optional cancellation reason, included in the notice to the invitee.
Over MCP the same operation is the tool booking_cancel_appointment at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect calendar
booking.connect_calendarwriteconfirm
Start linking a host's own Google Calendar or Microsoft 365 / Outlook account, so their real commitments block booking slots and meetings booked here are written onto their calendar. This does NOT complete the link on its own: connecting requires the account holder to approve access on the provider's own consent screen, so what comes back is the URL that starts that flow. Open it in a browser where the host is already signed in to this account — the link acts as whoever is signed in, so it connects THAT person's calendar, and it grants this account ongoing read/write access to their calendar until it is disconnected. Any member may connect their own; use booking.list_calendar_connections to see what is already linked.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
provider
"google" | "microsoft"
required
Which calendar to link: 'google' for Google Calendar, 'microsoft' for Microsoft 365 / Outlook.
Over MCP the same operation is the tool booking_connect_calendar at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect Zoom account
booking.connect_zoomwriteconfirm
Start Zoom OAuth authorization for the signed-in host. Returns a browser URL; nothing connects until the host approves Zoom access. Enables automatic meeting creation for opted-in event types, subject to the host's Zoom plan. Requires the platform OAuth app; use booking.save_zoom_credentials for your own Server-to-Server OAuth app instead.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool booking_connect_zoom at https://app.chirply.io/api/mcp, same bearer token, same input.
Create event type
booking.create_event_typewriteadmin only
Create a new bookable event type (a meeting people can book), and return its public booking URL. Nothing is sent to anyone and nobody is charged by this call — but if `is_active` is left on (the default) the event type's public booking page goes live immediately and strangers holding the link can book real time on a host's calendar from that moment. Owners and admins only, matching the Calendars editor. Hosts must be members of this account; when `host_user_ids` is omitted the calling user hosts it, and an API key (which has no user) must name at least one host.
Parameters
Field
Type
Required
Description
name
string
required
What people are booking, e.g. 'Intro call'. Shown as the heading on the public booking page.
description
string (or null)
optional
A sentence about what to expect, shown on the booking page. Null for none.
How the meeting is staffed: one_on_one (a single host, one invitee per slot), group (one host, several invitees share a slot up to `capacity`), collective (several hosts who must ALL be free), round_robin (a pool of hosts, whoever is free/next is assigned). Default: "one_on_one"
color
string (or null)
optional
Accent colour for this event type in the app's calendar views, as a CSS colour string. Null for the default.
duration_minutes
integer
optional
How long the meeting runs, in minutes. Labelled 'Length' in the app. Default: 30
buffer_before_minutes
integer
optional
Gap kept free before each booking, in minutes. Blocks the slot for the host but is not shown to the invitee. Default: 0
buffer_after_minutes
integer
optional
Gap kept free after each booking, in minutes. Default: 0
min_notice_minutes
integer
optional
How far ahead someone must book, in minutes — no last-minute slots. The app asks for this in hours, so 120 here is the app's '2'. Default: 0
date_range_days
integer
optional
How many days into the future people can book. Default: 60
slot_interval_minutes
integer (or null)
optional
Start-time spacing in minutes, e.g. 15 to offer times on the quarter hour. Null (the default) offers times back-to-back at the meeting's own length.
capacity
integer
optional
Spots per slot — how many people may book the SAME time. Only applies to kind 'group'; it is forced to 1 for every other kind. Default: 1
Where the meeting happens, shown to the invitee. 'phone_out' means the host calls the invitee; 'phone_in' means the invitee calls a number you publish. Default: "video"
location_details
object
optional
The one detail that goes with `location_type`, plus optional instructions. Fields that don't match the chosen location type are ignored.
location_details.auto_zoom
boolean
optional
For Zoom locations: create a unique meeting automatically for each booking time using the assigned host connection. Group attendees share the room. Every host must connect Zoom first. False or omitted uses the pasted link.
location_details.link
string
optional
Meeting URL, for the video/google_meet/zoom/ms_teams location types.
location_details.phone
string
optional
Phone number, for the phone_out/phone_in location types.
location_details.address
string
optional
Street address, for the in_person location type.
location_details.instructions
string
optional
Free-text joining instructions shown to the invitee alongside the location.
require_payment
boolean
optional
Require the invitee to pay before the slot is held. Turning this on means real cards are charged on the organization's OWN connected Stripe account when people book. Default: false
price_cents
integer
optional
What the invitee is charged to book, in the smallest currency unit (cents) — 12500 is $125.00. Ignored unless require_payment is true. Default: 0
currency
string
optional
Three-letter ISO currency code for the booking price. The app's own editor only offers USD. Default: "usd"
questions
object[]
optional
Custom questions added to the public booking form, in display order. Name/email/phone are always collected and don't belong here. Omit to add none.
questions[].key
string
optional
Stable machine key this answer is stored under in an appointment's `answers`. Derived from the label when omitted. Keep it stable across edits or previously collected answers stop lining up.
Which input the invitee gets. 'select' needs `options`. Default: "text"
questions[].required
boolean
optional
Whether the invitee must answer before they can book. Default: false
questions[].options
string[]
optional
Choices for a 'select' question, in display order.
questions[].placeholder
string
optional
Greyed-out hint text inside the input.
redirect_url
string (uri) (or null)
optional
Send the invitee to this URL instead of showing the built-in confirmation screen. Null for the built-in screen.
confirmation_message
string (or null)
optional
Text shown on the confirmation screen and included in the confirmation email. Null for the default wording.
reminders
object[]
optional
Automatic reminders sent to the invitee before the meeting. Each SMS reminder is a real text billed to the organization's own Twilio account. Omit for none.
reminders[].channel
"email" | "sms"
required
How the reminder goes out. 'sms' sends a REAL text from the organization's own Twilio number and is billed to them.
reminders[].minutes_before
integer
required
How many minutes before the meeting starts to send it, e.g. 1440 for a day before.
is_active
boolean
optional
'Accepting bookings'. true publishes the public booking page immediately; false creates it hidden so you can finish setting it up first. Default: true
host_user_ids
array of (string (uuid))
optional
Account members who host this event type. Required for 'round_robin' and 'collective' (the whole pool); for the single-host kinds only the first id is used. Defaults to the calling user.
Over MCP the same operation is the tool booking_create_event_type at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete appointment
booking.delete_appointmentwriteconfirmadmin only
Permanently deletes an appointment and its reminders, including canceled appointments, after removing its linked Google/Outlook Calendar events. Cannot be undone. If calendar cleanup fails the appointment is kept for retry. Does not issue refunds or send Chirply cancellation messages; use booking.cancel_appointment to notify the invitee. Owners and admins only.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
appointment_id
string (uuid)
required
The appointment to permanently delete, including its linked calendar events.
Over MCP the same operation is the tool booking_delete_appointment at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete event type
booking.delete_event_typewriteconfirmadmin only
Delete a bookable event type. Its public booking page stops working immediately and it disappears from the Calendars list. This is a soft delete — the record is retained so appointments already booked against it keep their history, and nothing already on anyone's calendar is cancelled or refunded (cancel those separately with booking.cancel_appointment if that's what you mean). There is no undo in the app.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool booking_delete_event_type at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect
booking.disconnect_calendarwrite
Disconnect a linked external calendar (Google or Outlook) by its connection id, removing this account's stored access for that calendar. After this, its busy times no longer block booking slots — so times the host is actually busy start being offered to invitees — and new meetings are no longer written to it. Restoring sync means going through the provider's consent screen again: booking.connect_calendar returns that link. Does not delete any existing calendar events. A member can only disconnect their own calendar; managers (and API keys) can disconnect any in the account.
Parameters
Field
Type
Required
Description
connection_id
string (uuid)
required
The calendar connection's id, from booking.list_calendar_connections.
Over MCP the same operation is the tool booking_disconnect_calendar at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect Zoom
booking.disconnect_zoomwriteconfirm
Remove this host's encrypted Zoom credentials from the account. Future bookings using automatic Zoom links cannot be completed until the host reconnects or the event switches to a pasted link. Existing Zoom meetings are kept; this does not delete rooms or cancel appointments. Signed-in users can disconnect only themselves; API keys must name an account host.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
user_id
string (uuid)
optional
Host to disconnect. Defaults to the caller; required for API keys. Signed-in users can disconnect only themselves.
Over MCP the same operation is the tool booking_disconnect_zoom at https://app.chirply.io/api/mcp, same bearer token, same input.
Open an appointment
booking.get_appointmentread
Fetch one appointment by id — the event, host, contact, invitee details, start/end time, location, status and payment state, plus the invitee's manage (reschedule/cancel) URL. Read-only.
Over MCP the same operation is the tool booking_get_appointment at https://app.chirply.io/api/mcp, same bearer token, same input.
Open time slots
booking.get_availabilityread
List the open, bookable time slots for an event type over a date range — exactly what an invitee would see on the public booking page, computed live from the hosts' working hours, existing appointments, buffers and minimum notice. Returns slots grouped by day, each an ISO UTC start/end. Read-only; reserves nothing. The range may span at most 62 days.
Parameters
Field
Type
Required
Description
event_type_id
string (uuid)
required
The event type to find open slots for.
from
string
required
Start of the range, inclusive, as an ISO date (YYYY-MM-DD) or full ISO 8601 timestamp. The literal "now" means the moment the request is served.
to
string
required
End of the range, inclusive, as an ISO date (YYYY-MM-DD) or full ISO 8601 timestamp. Must be after `from` and at most 62 days later.
timezone
string
optional
IANA timezone the slots are grouped by day in, e.g. 'America/New_York'. Defaults to the account timezone from Business profile.
Over MCP the same operation is the tool booking_get_availability at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a booking type
booking.get_event_typeread
Fetch one bookable event type by id — its full configuration (kind, duration, buffers, min-notice, location, booking form, reminders, price), the users hosting it, and the shareable public booking URL. This is everything the edit screen shows, so it is what you read before calling booking.update_event_type. Read-only.
Over MCP the same operation is the tool booking_get_event_type at https://app.chirply.io/api/mcp, same bearer token, same input.
List appointments
booking.list_appointmentsread
List this organization's booked appointments, soonest first, optionally filtered by date range, status (confirmed, canceled, completed, no_show), event type, or contact. Read-only; changes nothing.
Parameters
Field
Type
Required
Description
from
string
optional
Only appointments starting on/after this ISO date (YYYY-MM-DD) or timestamp. The literal "now" means the moment the request is served — use it from a workflow, whose request body is fixed when you build it, to count only appointments still to come. Without it, past appointments count too, because a confirmed appointment keeps that status after it has happened.
to
string
optional
Only appointments starting before this ISO date (YYYY-MM-DD) or timestamp. A bare date covers that whole day. The literal "now" means the moment the request is served.
Over MCP the same operation is the tool booking_list_appointments at https://app.chirply.io/api/mcp, same bearer token, same input.
Calendar connections
booking.list_calendar_connectionsread
List the external calendars (Google Calendar, Microsoft 365 / Outlook) connected for scheduling — for each: the provider, the connected account's email, whether it feeds busy times into availability (inbound) and receives booked meetings (outbound), when it last synced, and any current sync error. Access tokens are NEVER returned. When called by a specific user (Copilot) only that user's own connections are shown; an API key sees the whole account. Read-only.
Over MCP the same operation is the tool booking_list_calendar_connections at https://app.chirply.io/api/mcp, same bearer token, same input.
List booking domains
booking.list_domainsreadadmin only
Lists this account's connected domains and their readiness for publishing event types. Returns hostname, status and supported roles; does not change DNS or spend money.
Over MCP the same operation is the tool booking_list_domains at https://app.chirply.io/api/mcp, same bearer token, same input.
Booking types
booking.list_event_typesread
List this organization's bookable event types (meeting types) — for each: name, public URL slug, kind (one_on_one, group, collective, round_robin), duration in minutes, price, and the shareable public booking URL an invitee visits to pick a time. Read-only; changes nothing and sends nothing. By default only active types are returned.
Parameters
Field
Type
Required
Description
include_inactive
boolean
optional
Include event types that are currently switched off (unbookable). Defaults to false. Default: false
Over MCP the same operation is the tool booking_list_event_types at https://app.chirply.io/api/mcp, same bearer token, same input.
My availability
booking.list_schedulesread
List the saved weekly availability schedules in this account — for each: its name, whether it is the owner's default, the timezone it is interpreted in, and the full set of working hours keyed by weekday (sun–sat), each day a list of "HH:MM"–"HH:MM" windows. Read this BEFORE calling booking.set_availability: that capability REPLACES the whole week, so editing Tuesday without first reading Monday through Sunday would wipe them. By default you get the calling user's own schedules, which is exactly what the My availability screen shows; an API key with no user attached sees the whole account. Read-only.
Parameters
Field
Type
Required
Description
owner_user_id
string (uuid)
optional
Only this member's schedules. Defaults to the calling user's own; ignored when all_users is true.
all_users
boolean
optional
List every host's schedules in the account instead of just one person's. Default: false
Over MCP the same operation is the tool booking_list_schedules at https://app.chirply.io/api/mcp, same bearer token, same input.
Zoom meetings
booking.list_zoom_connectionsread
Read connected Zoom host emails and connection errors for scheduling. Returns only the caller's connection for signed-in users, or all hosts for an account API key. Never returns credentials, tokens, or host-only meeting URLs. Changes nothing and creates no meetings.
Over MCP the same operation is the tool booking_list_zoom_connections at https://app.chirply.io/api/mcp, same bearer token, same input.
Reschedule an appointment
booking.reschedule_appointmentwriteconfirmadmin only
Moves a booked appointment to a new time: the new slot is re-validated against live availability, a fresh appointment is created linked to the old one (reschedule_of) with its payment record carried over, the old one is canceled, and the invitee is emailed/texted the new time from the organization's own Mailgun/Twilio — the customer is always notified, never silently moved. Fires 'appointment rescheduled' automations. Owners and admins only. Provide the new start exactly as one of the ISO UTC starts returned by booking.get_availability, or set allow_outside_availability to book a time the engine wouldn't offer (the host still can't be double-booked). Refuses if the new slot is no longer open, or if the appointment was canceled or has already started.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
appointment_id
string (uuid)
required
The appointment to move.
new_start
string (date-time)
required
The new start as an ISO 8601 UTC timestamp — one of the starts from booking.get_availability.
allow_outside_availability
boolean
optional
Owner/admin escape hatch, default false: book the new time even when the availability engine wouldn't offer it (skips working hours, minimum notice, capacity and buffers). A real conflict still refuses — the host's confirmed appointments and connected external calendars can never be double-booked. Leave false to only accept times from booking.get_availability.
Over MCP the same operation is the tool booking_reschedule_appointment at https://app.chirply.io/api/mcp, same bearer token, same input.
Save Zoom credentials
booking.save_zoom_credentialswriteconfirm
Connect your own Zoom Server-to-Server OAuth app to the calling host. Verifies account access, encrypts credentials at rest, and replaces any existing Zoom connection for that host. Allows opted-in event types to create real Zoom meetings automatically under that account's plan. No meeting is created by this action and secrets are never returned. API key callers must supply a host user ID in this account.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Account ID from your activated Zoom Server-to-Server OAuth app.
client_id
string
required
Client ID from the same Zoom Server-to-Server OAuth app.
client_secret
string
required
Client Secret from that Zoom app. Encrypted at rest and never returned.
host_email
string (email)
required
Email of the Zoom user in that account who will host your bookings.
user_id
string (uuid)
optional
Account host to connect. Defaults to the calling user; required for API key callers. A signed-in member can connect only themselves.
Over MCP the same operation is the tool booking_save_zoom_credentials at https://app.chirply.io/api/mcp, same bearer token, same input.
Mark appointment completed
booking.set_appointment_statuswriteadmin only
Record how an appointment actually went — 'completed' if it happened, 'no_show' if the invitee never turned up, or 'confirmed' to put it back the way it was. This is a PRIVATE record change: it sends the invitee nothing, changes no times, fires no automations, refunds nothing, and does not free the slot. It is the app's 'Mark completed' / 'Mark no-show' / 'Back to confirmed' menu. To actually call the meeting off and tell the invitee, use booking.cancel_appointment instead. Owners and admins only.
Parameters
Field
Type
Required
Description
appointment_id
string (uuid)
required
The appointment to mark.
status
"completed" | "no_show" | "confirmed"
required
The outcome to record: 'completed' (it happened), 'no_show' (the invitee didn't turn up), or 'confirmed' (undo, back to a normal upcoming booking).
Over MCP the same operation is the tool booking_set_appointment_status at https://app.chirply.io/api/mcp, same bearer token, same input.
Set your working hours
booking.set_availabilitywrite
Set YOUR OWN weekly booking availability — the recurring working hours the slot engine offers to invitees for events you host, interpreted in the account timezone from Business profile. Replaces your existing weekly hours (does not touch teammates' schedules or one-off date overrides). Personal to the calling user; API keys act as the user that issued them.
Parameters
Field
Type
Required
Description
timezone
string
optional
Deprecated compatibility field. Availability now uses the account timezone from Business profile.
hours
object
required
Weekly recurring availability, keyed by weekday (sun–sat). Each day is a list of "HH:MM"–"HH:MM" windows in the schedule's timezone; a missing or empty day is unavailable. Example: {"mon":[{"start":"09:00","end":"17:00"}],"tue":[{"start":"09:00","end":"12:00"}]}.
hours.sun
object[]
optional
Availability windows for this weekday. Omit the day or pass [] to mark it fully unavailable.
hours.sun[].start
string
required
Window start as 24-hour "HH:MM", e.g. "09:00".
hours.sun[].end
string
required
Window end as 24-hour "HH:MM", e.g. "17:00".
hours.mon
object[]
optional
Availability windows for this weekday. Omit the day or pass [] to mark it fully unavailable.
hours.mon[].start
string
required
Window start as 24-hour "HH:MM", e.g. "09:00".
hours.mon[].end
string
required
Window end as 24-hour "HH:MM", e.g. "17:00".
hours.tue
object[]
optional
Availability windows for this weekday. Omit the day or pass [] to mark it fully unavailable.
hours.tue[].start
string
required
Window start as 24-hour "HH:MM", e.g. "09:00".
hours.tue[].end
string
required
Window end as 24-hour "HH:MM", e.g. "17:00".
hours.wed
object[]
optional
Availability windows for this weekday. Omit the day or pass [] to mark it fully unavailable.
hours.wed[].start
string
required
Window start as 24-hour "HH:MM", e.g. "09:00".
hours.wed[].end
string
required
Window end as 24-hour "HH:MM", e.g. "17:00".
hours.thu
object[]
optional
Availability windows for this weekday. Omit the day or pass [] to mark it fully unavailable.
hours.thu[].start
string
required
Window start as 24-hour "HH:MM", e.g. "09:00".
hours.thu[].end
string
required
Window end as 24-hour "HH:MM", e.g. "17:00".
hours.fri
object[]
optional
Availability windows for this weekday. Omit the day or pass [] to mark it fully unavailable.
hours.fri[].start
string
required
Window start as 24-hour "HH:MM", e.g. "09:00".
hours.fri[].end
string
required
Window end as 24-hour "HH:MM", e.g. "17:00".
hours.sat
object[]
optional
Availability windows for this weekday. Omit the day or pass [] to mark it fully unavailable.
hours.sat[].start
string
required
Window start as 24-hour "HH:MM", e.g. "09:00".
hours.sat[].end
string
required
Window end as 24-hour "HH:MM", e.g. "17:00".
name
string
optional
A label for this schedule, e.g. 'Working hours'. Defaults to 'Working hours' when first created.
Over MCP the same operation is the tool booking_set_availability at https://app.chirply.io/api/mcp, same bearer token, same input.
Save booking domain
booking.set_domainwriteconfirmadmin only
Changes the public hostname used in an event type's booking links and appointment-management links. Only active website/app domains connected to this account are allowed. Null restores the account default. Existing booking URLs remain available. Does not modify DNS, replace the domain's website, send messages, or spend money.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
event_type_id
string (uuid)
required
Event type whose public booking domain should change.
domain_id
string (uuid) (or null)
required
Connected domain ID from booking.list_domains, or null to use the account default.
Over MCP the same operation is the tool booking_set_domain at https://app.chirply.io/api/mcp, same bearer token, same input.
Accepting bookings
booking.set_event_type_activewriteconfirmadmin only
Turn an event type's PUBLIC booking page on or off. Switching it off takes the page down for everyone holding the link — nobody can book that meeting any more — without deleting the event type or any appointment already on the calendar; switching it back on republishes it instantly and strangers can book real time again. Owners and admins only.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
event_type_id
string (uuid)
required
The event type to show or hide.
active
boolean
optional
true accepts bookings on the public page; false takes it down. Default: true
Over MCP the same operation is the tool booking_set_event_type_active at https://app.chirply.io/api/mcp, same bearer token, same input.
Save event type
booking.update_event_typewriteadmin only
Change the configuration of an existing bookable event type. Only the fields you pass are changed; everything omitted is left exactly as it was. Existing appointments already on the calendar are NOT moved or re-priced — changes apply to future bookings. Changing duration, buffers, notice or hosts changes which times the public booking page offers from that moment on. Owners and admins only. Passing `questions`, `reminders` or `host_user_ids` REPLACES that whole list, so read the current one with booking.get_event_type first. To show or hide the public booking page, use booking.set_event_type_active — this capability deliberately cannot.
Parameters
Field
Type
Required
Description
event_type_id
string (uuid)
required
The event type to edit.
name
string
optional
What people are booking, e.g. 'Intro call'. Shown as the heading on the public booking page.
description
string (or null)
optional
A sentence about what to expect, shown on the booking page. Null clears it.
How the meeting is staffed: one_on_one (a single host, one invitee per slot), group (one host, several invitees share a slot up to `capacity`), collective (several hosts who must ALL be free), round_robin (a pool of hosts, whoever is free/next is assigned).
color
string (or null)
optional
Accent colour for this event type in the app's calendar views, as a CSS colour string. Null clears it.
duration_minutes
integer
optional
How long the meeting runs, in minutes.
buffer_before_minutes
integer
optional
Gap kept free before each booking, in minutes.
buffer_after_minutes
integer
optional
Gap kept free after each booking, in minutes.
min_notice_minutes
integer
optional
How far ahead someone must book, in minutes. The app asks for this in hours, so 120 here is the app's '2'.
date_range_days
integer
optional
How many days into the future people can book.
slot_interval_minutes
integer (or null)
optional
Start-time spacing in minutes. Null offers times back-to-back at the meeting's own length.
capacity
integer
optional
Spots per slot — how many people may book the SAME time. Only applies to kind 'group'; forced to 1 for every other kind.
Where the meeting happens, shown to the invitee. 'phone_out' means the host calls the invitee; 'phone_in' means the invitee calls a number you publish.
location_details
object
optional
The one detail that goes with `location_type`, plus optional instructions. Fields that don't match the chosen location type are ignored.
location_details.auto_zoom
boolean
optional
For Zoom locations: create a unique meeting automatically for each booking time using the assigned host connection. Group attendees share the room. Every host must connect Zoom first. False or omitted uses the pasted link.
location_details.link
string
optional
Meeting URL, for the video/google_meet/zoom/ms_teams location types.
location_details.phone
string
optional
Phone number, for the phone_out/phone_in location types.
location_details.address
string
optional
Street address, for the in_person location type.
location_details.instructions
string
optional
Free-text joining instructions shown to the invitee alongside the location.
require_payment
boolean
optional
Require the invitee to pay before the slot is held. Turning this on means real cards are charged on the organization's OWN connected Stripe account when people book; turning it off resets the price to zero.
price_cents
integer
optional
What the invitee is charged to book, in the smallest currency unit (cents) — 12500 is $125.00. Ignored unless payment is required.
currency
string
optional
Three-letter ISO currency code for the booking price.
questions
object[]
optional
REPLACES the custom questions on the public booking form. Pass [] to remove them all; omit to leave them alone.
questions[].key
string
optional
Stable machine key this answer is stored under in an appointment's `answers`. Derived from the label when omitted. Keep it stable across edits or previously collected answers stop lining up.
Which input the invitee gets. 'select' needs `options`. Default: "text"
questions[].required
boolean
optional
Whether the invitee must answer before they can book. Default: false
questions[].options
string[]
optional
Choices for a 'select' question, in display order.
questions[].placeholder
string
optional
Greyed-out hint text inside the input.
redirect_url
string (uri) (or null)
optional
Send the invitee to this URL instead of the built-in confirmation screen. Null restores the built-in screen.
confirmation_message
string (or null)
optional
Text shown on the confirmation screen and included in the confirmation email. Null restores the default wording.
reminders
object[]
optional
REPLACES the reminder rules. Each SMS reminder is a real text billed to the organization's own Twilio account. Pass [] to stop reminders; omit to leave them alone.
reminders[].channel
"email" | "sms"
required
How the reminder goes out. 'sms' sends a REAL text from the organization's own Twilio number and is billed to them.
reminders[].minutes_before
integer
required
How many minutes before the meeting starts to send it, e.g. 1440 for a day before.
host_user_ids
array of (string (uuid))
optional
REPLACES who hosts this event type. Every id must be a member of this account. For the single-host kinds only the first id is used. Omit to leave the roster alone.