API reference

Base URL https://app.clearslot.eu/api/v1. Send Authorization: Bearer cs_live_…. Start with the quickstart.

Meta

get/api/v1/meta

API version information

200: API version information

FieldType
apiVersion1required

Me

get/api/v1/me

Describe the calling credential: business, key name, scopes and limits

200: The calling credential

FieldType
object"me"required
organizationobjectrequired
credentialobjectrequired
actingAsobjectrequired
scopesstring[]required
limitsobjectrequired

Organization

get/api/v1/organization

Show the business: name, country, category and booking language

200: The business

FieldType
object"organization"required
idstringrequired
namestringrequired
slugstringrequired
countrystring | nullrequired
businessCategorystring | nullrequired
bookingLanguagestring | nullrequired
logoUrlstring | nullrequired
createdAtstring | nullrequired

get/api/v1/members

List the people in the business with their role and whether they take bookings

ParameterInType
limitqueryinteger
cursorquerystring
bookablequery"true" | "false"

200: A page of members

FieldType
object"list"required
dataMember[]required
nextCursorstring | nullrequired

get/api/v1/members/{memberId}

Show one person in the business

ParameterInType
memberIdpathstringrequired

200: The member

FieldType
object"member"required
idstringrequired
namestringrequired
emailstringrequired
role"owner" | "admin" | "member"required
bookablebooleanrequired
timezonestringrequired
jobTitlestring | nullrequired
avatarUrlstring | nullrequired
createdAtstring | nullrequired

get/api/v1/booking-links

List the business's booking links with type, public URL, hosts and whether each is on

ParameterInType
limitqueryinteger
cursorquerystring
typequery"meeting" | "service" | "class" | "asset"
activequery"true" | "false"

200: A page of booking links

FieldType
object"list"required
dataBookingLink[]required
nextCursorstring | nullrequired

post/api/v1/booking-links

Create a meeting booking link: one-to-one, group, round robin or collective, off until activated

Creates a meeting link (one-to-one, group, round robin or collective). It starts off; activate it to publish. Online prepayment is not available through the API.

Body

FieldType
titlestringrequired
descriptionstring
eventType"one_on_one" | "group" | "round_robin" | "collective"
durationMinutesinteger
hostIdsstring[]
platforms"Google Meet" | "Zoom" | "Phone Call" | "In Person"[]
locationAddressstring
requiresConfirmationboolean
maxGuestsPerSlotinteger
visibility"public" | "unlisted" | "private"
intakeQuestionsobject[]

201: The new meeting link

FieldType
object"booking_link"required
idstringrequired
titlestringrequired
descriptionstring | nullrequired
typestringrequired
eventTypestring | nullrequired
activebooleanrequired
visibilitystring | nullrequired
urlstringrequired
durationMinutesinteger | nullrequired
localestring | nullrequired
ownerIdstringrequired
hostsobject[]required
requiresConfirmationbooleanrequired
paymentobjectrequired
createdAtstring | nullrequired
updatedAtstring | nullrequired
publishedAtstring | nullrequired

get/api/v1/booking-links/{bookingLinkId}

Show one booking link with its type, public URL, hosts and payment mode

ParameterInType
bookingLinkIdpathstringrequired

200: The booking link

FieldType
object"booking_link"required
idstringrequired
titlestringrequired
descriptionstring | nullrequired
typestringrequired
eventTypestring | nullrequired
activebooleanrequired
visibilitystring | nullrequired
urlstringrequired
durationMinutesinteger | nullrequired
localestring | nullrequired
ownerIdstringrequired
hostsobject[]required
requiresConfirmationbooleanrequired
paymentobjectrequired
createdAtstring | nullrequired
updatedAtstring | nullrequired
publishedAtstring | nullrequired

patch/api/v1/booking-links/{bookingLinkId}

Change a meeting link's basics, location, confirmation, group size or intake questions

Meeting links only. Each section is optional and replaces only the fields it names.

ParameterInType
bookingLinkIdpathstringrequired

Body

FieldType
sectionsobjectrequired

200: The booking link

FieldType
object"booking_link"required
idstringrequired
titlestringrequired
descriptionstring | nullrequired
typestringrequired
eventTypestring | nullrequired
activebooleanrequired
visibilitystring | nullrequired
urlstringrequired
durationMinutesinteger | nullrequired
localestring | nullrequired
ownerIdstringrequired
hostsobject[]required
requiresConfirmationbooleanrequired
paymentobjectrequired
createdAtstring | nullrequired
updatedAtstring | nullrequired
publishedAtstring | nullrequired

delete/api/v1/booking-links/{bookingLinkId}

Delete a meeting booking link; its bookings stay

ParameterInType
bookingLinkIdpathstringrequired

200: The link is deleted

FieldType
object"booking_link"required
idstringrequired
deletedtruerequired

post/api/v1/booking-links/{bookingLinkId}/activate

Turn a booking link on and publish its page

ParameterInType
bookingLinkIdpathstringrequired

200: The booking link, on

FieldType
object"booking_link"required
idstringrequired
titlestringrequired
descriptionstring | nullrequired
typestringrequired
eventTypestring | nullrequired
activebooleanrequired
visibilitystring | nullrequired
urlstringrequired
durationMinutesinteger | nullrequired
localestring | nullrequired
ownerIdstringrequired
hostsobject[]required
requiresConfirmationbooleanrequired
paymentobjectrequired
createdAtstring | nullrequired
updatedAtstring | nullrequired
publishedAtstring | nullrequired

post/api/v1/booking-links/{bookingLinkId}/deactivate

Turn a booking link off and withdraw its page

ParameterInType
bookingLinkIdpathstringrequired

200: The booking link, off

FieldType
object"booking_link"required
idstringrequired
titlestringrequired
descriptionstring | nullrequired
typestringrequired
eventTypestring | nullrequired
activebooleanrequired
visibilitystring | nullrequired
urlstringrequired
durationMinutesinteger | nullrequired
localestring | nullrequired
ownerIdstringrequired
hostsobject[]required
requiresConfirmationbooleanrequired
paymentobjectrequired
createdAtstring | nullrequired
updatedAtstring | nullrequired
publishedAtstring | nullrequired

get/api/v1/services

List the services offered on the business's service booking links, with variants and prices

ParameterInType
limitqueryinteger
cursorquerystring
bookingLinkIdquerystring

200: A page of services

FieldType
object"list"required
dataService[]required
nextCursorstring | nullrequired

get/api/v1/class-types

List the class types on the business's class booking links

ParameterInType
limitqueryinteger
cursorquerystring
bookingLinkIdquerystring

200: A page of class types

FieldType
object"list"required
dataClassType[]required
nextCursorstring | nullrequired

get/api/v1/class-sessions

List scheduled class sessions with capacity and bookings, filtered by link and time

ParameterInType
limitqueryinteger
cursorquerystring
bookingLinkIdquerystring
startsAfterquerystring
startsBeforequerystring

200: A page of class sessions

FieldType
object"list"required
dataClassSession[]required
nextCursorstring | nullrequired

get/api/v1/resources

List the business's bookable resources

ParameterInType
limitqueryinteger
cursorquerystring
activequery"true" | "false"

200: A page of resources

FieldType
object"list"required
dataResource[]required
nextCursorstring | nullrequired

get/api/v1/routing-forms

List the business's routing forms and their questions

ParameterInType
limitqueryinteger
cursorquerystring

200: A page of routing forms

FieldType
object"list"required
dataRoutingForm[]required
nextCursorstring | nullrequired

get/api/v1/routing-forms/{routingFormId}/submissions

List the answers people submitted to one routing form and where each was routed

ParameterInType
routingFormIdpathstringrequired
limitqueryinteger
cursorquerystring
createdSincequerystring

200: A page of submissions, oldest first

FieldType
object"list"required
dataRoutingFormSubmission[]required
nextCursorstring | nullrequired

Availability

get/api/v1/booking-links/{bookingLinkId}/slots

List the times a booking link can be booked in a window of up to 31 days, under the same rules as its public page

Times are computed with the same rules as the public booking page. Service links need serviceIds. Counts toward the availability budget of 60 lookups a minute.

ParameterInType
bookingLinkIdpathstringrequired
fromquerystringrequired
toquerystring
serviceIdsquerystring
variantIdsquerystring

200: Bookable times

FieldType
object"availability"required
bookingLinkIdstringrequired
timeZonestringrequired
fromstringrequired
tostringrequired
slotsSlot[]required

get/api/v1/members/{memberId}/busy-times

List when one person is busy in a window of up to 31 days, from bookings and connected calendars, without titles

ParameterInType
memberIdpathstringrequired
fromquerystringrequired
toquerystring

200: Busy intervals

FieldType
object"busy_times"required
memberIdstringrequired
fromstringrequired
tostringrequired
busyBusyTime[]required

get/api/v1/members/{memberId}/schedules

List one person's availability schedules with weekly hours, date overrides and rules

ParameterInType
memberIdpathstringrequired

200: The member's schedules

FieldType
object"list"required
dataSchedule[]required
nextCursorstring | nullrequired

get/api/v1/schedules/{scheduleId}

Show one availability schedule with weekly hours, date overrides and rules

ParameterInType
scheduleIdpathstringrequired

200: The schedule

FieldType
object"schedule"required
idstringrequired
memberIdstringrequired
namestringrequired
isDefaultbooleanrequired
timeZonestringrequired
weeklyHoursobjectrequired
dateOverridesobjectrequired
rulesobjectrequired
updatedAtstring | nullrequired

put/api/v1/schedules/{scheduleId}/weekly-hours

Replace the weekly hours of an availability schedule

ParameterInType
scheduleIdpathstringrequired

Body

FieldType
weeklyHoursobjectrequired

200: The schedule

FieldType
object"schedule"required
idstringrequired
memberIdstringrequired
namestringrequired
isDefaultbooleanrequired
timeZonestringrequired
weeklyHoursobjectrequired
dateOverridesobjectrequired
rulesobjectrequired
updatedAtstring | nullrequired

put/api/v1/schedules/{scheduleId}/date-overrides

Replace the date overrides of an availability schedule: days off, or different hours on given dates

ParameterInType
scheduleIdpathstringrequired

Body

FieldType
dateOverridesobjectrequired

200: The schedule

FieldType
object"schedule"required
idstringrequired
memberIdstringrequired
namestringrequired
isDefaultbooleanrequired
timeZonestringrequired
weeklyHoursobjectrequired
dateOverridesobjectrequired
rulesobjectrequired
updatedAtstring | nullrequired

get/api/v1/members/{memberId}/blocked-times

List one person's blocked time in a window of up to 31 days

ParameterInType
memberIdpathstringrequired
fromquerystringrequired
toquerystring

200: Blocked time in the window

FieldType
object"list"required
dataBlockedTime[]required
nextCursorstring | nullrequired

post/api/v1/members/{memberId}/blocked-times

Block time for one person, for example from a calendar Clearslot does not connect to; an externalId updates the earlier block

Send your own externalId to update the same block on later pushes instead of adding another.

ParameterInType
memberIdpathstringrequired

Body

FieldType
startTimestringrequired
endTimestringrequired
labelstring
externalIdstring

201: The blocked time

FieldType
object"blocked_time"required
idstringrequired
memberIdstringrequired
startTimestringrequired
endTimestringrequired
labelstring | nullrequired
externalIdstring | nullrequired
createdAtstringrequired

delete/api/v1/blocked-times/{blockedTimeId}

Remove blocked time

ParameterInType
blockedTimeIdpathstringrequired

200: The block is removed

FieldType
object"blocked_time"required
idstringrequired
deletedtruerequired

Bookings

get/api/v1/bookings

List bookings across the business, filtered by member, status, time, link, customer or guest email, with cursor paging

API keys see the whole business. Use updatedSince with the time of your last sync, overlapped by a minute, to receive every change since then.

ParameterInType
limitqueryinteger
cursorquerystring
memberIdquerystring
statusquery"pending" | "pending_reschedule" | "confirmed" | "completed" | "cancelled" | "no_show"
startsAfterquerystring
startsBeforequerystring
updatedSincequerystring
sortquery"startTime" | "updatedAt"
bookingLinkIdquerystring
customerIdquerystring
guestEmailquerystring

200: A page of bookings

FieldType
object"list"required
dataBooking[]required
nextCursorstring | nullrequired

post/api/v1/bookings

Book a guest through a booking link under the same rules as its public page; host mode books like the dashboard

Books a guest through a booking link under the same availability, capacity, notice, intake and approval rules as its public page. Requires an Idempotency-Key. Links that take online payment are refused with online_payment_unsupported. Counts toward 30 bookings a minute and 500 a day.

Body

FieldType
bookingLinkIdstringrequired
startTimestring
classSessionIdstring
serviceIdsstring[]
variantIdsstring[]
providerMemberIdstring
assetListingKeystring
durationMinutesinteger
guestCountinteger
guestobjectrequired
intakeAnswersobject
guestConsentsobject
notifyGuestboolean

201: The booking

FieldType
object"booking"required
idstringrequired
statusstring | nullrequired
sourcestring | nullrequired
startTimestringrequired
endTimestringrequired
schedulingTimezonestringrequired
createdAtstring | nullrequired
updatedAtstringrequired
guestobjectrequired
guestCountinteger | nullrequired
customerIdstring | nullrequired
intakeAnswersobjectrequired
notesstring | nullrequired
platformstringrequired
meetingUrlstring | nullrequired
pageTypestringrequired
bookingLinkobject | nullrequired
servicesobject[]required
classSessionobject | nullrequired
resourceobject | nullrequired
paymentobjectrequired
cancellationobject | nullrequired
rescheduleProposalobject | nullrequired
rescheduleRevisionintegerrequired
waitlistedbooleanrequired
seriesIdstring | nullrequired
hostobject | nullrequired
isOwnBookingbooleanrequired
canManagebooleanrequired

get/api/v1/bookings/{bookingId}

Show one booking in the business, including whether the caller may manage it

ParameterInType
bookingIdpathstringrequired

200: The booking

FieldType
object"booking"required
idstringrequired
statusstring | nullrequired
sourcestring | nullrequired
startTimestringrequired
endTimestringrequired
schedulingTimezonestringrequired
createdAtstring | nullrequired
updatedAtstringrequired
guestobjectrequired
guestCountinteger | nullrequired
customerIdstring | nullrequired
intakeAnswersobjectrequired
notesstring | nullrequired
platformstringrequired
meetingUrlstring | nullrequired
pageTypestringrequired
bookingLinkobject | nullrequired
servicesobject[]required
classSessionobject | nullrequired
resourceobject | nullrequired
paymentobjectrequired
cancellationobject | nullrequired
rescheduleProposalobject | nullrequired
rescheduleRevisionintegerrequired
waitlistedbooleanrequired
seriesIdstring | nullrequired
hostobject | nullrequired
isOwnBookingbooleanrequired
canManagebooleanrequired

post/api/v1/bookings/{bookingId}/cancel

Cancel a booking, notify the guest and start any refund

Send an Idempotency-Key so a retried cancellation replays its first outcome.

ParameterInType
bookingIdpathstringrequired

Body

FieldType
reasonstring

200: The booking is cancelled

FieldType
cancelledtruerequired
refundPendingbooleanrequired

post/api/v1/bookings/{bookingId}/reschedule

Move a booking to a new start time, or another class session, and tell the guest

Moves the booking and tells the guest. Requires an Idempotency-Key.

ParameterInType
bookingIdpathstringrequired

Body

FieldType
startTimestring
classSessionIdstring
revisioninteger

200: The moved booking

FieldType
object"booking"required
idstringrequired
statusstring | nullrequired
sourcestring | nullrequired
startTimestringrequired
endTimestringrequired
schedulingTimezonestringrequired
createdAtstring | nullrequired
updatedAtstringrequired
guestobjectrequired
guestCountinteger | nullrequired
customerIdstring | nullrequired
intakeAnswersobjectrequired
notesstring | nullrequired
platformstringrequired
meetingUrlstring | nullrequired
pageTypestringrequired
bookingLinkobject | nullrequired
servicesobject[]required
classSessionobject | nullrequired
resourceobject | nullrequired
paymentobjectrequired
cancellationobject | nullrequired
rescheduleProposalobject | nullrequired
rescheduleRevisionintegerrequired
waitlistedbooleanrequired
seriesIdstring | nullrequired
hostobject | nullrequired
isOwnBookingbooleanrequired
canManagebooleanrequired

post/api/v1/bookings/{bookingId}/confirm

Approve a booking request that is waiting for confirmation and tell the guest

ParameterInType
bookingIdpathstringrequired

200: The confirmed booking

FieldType
object"booking"required
idstringrequired
statusstring | nullrequired
sourcestring | nullrequired
startTimestringrequired
endTimestringrequired
schedulingTimezonestringrequired
createdAtstring | nullrequired
updatedAtstringrequired
guestobjectrequired
guestCountinteger | nullrequired
customerIdstring | nullrequired
intakeAnswersobjectrequired
notesstring | nullrequired
platformstringrequired
meetingUrlstring | nullrequired
pageTypestringrequired
bookingLinkobject | nullrequired
servicesobject[]required
classSessionobject | nullrequired
resourceobject | nullrequired
paymentobjectrequired
cancellationobject | nullrequired
rescheduleProposalobject | nullrequired
rescheduleRevisionintegerrequired
waitlistedbooleanrequired
seriesIdstring | nullrequired
hostobject | nullrequired
isOwnBookingbooleanrequired
canManagebooleanrequired

post/api/v1/bookings/{bookingId}/decline

Decline a booking request, tell the guest and refund any payment

ParameterInType
bookingIdpathstringrequired

Body

FieldType
reasonstring

200: The declined booking

FieldType
object"booking"required
idstringrequired
statusstring | nullrequired
sourcestring | nullrequired
startTimestringrequired
endTimestringrequired
schedulingTimezonestringrequired
createdAtstring | nullrequired
updatedAtstringrequired
guestobjectrequired
guestCountinteger | nullrequired
customerIdstring | nullrequired
intakeAnswersobjectrequired
notesstring | nullrequired
platformstringrequired
meetingUrlstring | nullrequired
pageTypestringrequired
bookingLinkobject | nullrequired
servicesobject[]required
classSessionobject | nullrequired
resourceobject | nullrequired
paymentobjectrequired
cancellationobject | nullrequired
rescheduleProposalobject | nullrequired
rescheduleRevisionintegerrequired
waitlistedbooleanrequired
seriesIdstring | nullrequired
hostobject | nullrequired
isOwnBookingbooleanrequired
canManagebooleanrequired

post/api/v1/bookings/{bookingId}/no-show

Mark a confirmed attendee as a no-show

ParameterInType
bookingIdpathstringrequired

200: The booking, marked as a no-show

FieldType
object"booking"required
idstringrequired
statusstring | nullrequired
sourcestring | nullrequired
startTimestringrequired
endTimestringrequired
schedulingTimezonestringrequired
createdAtstring | nullrequired
updatedAtstringrequired
guestobjectrequired
guestCountinteger | nullrequired
customerIdstring | nullrequired
intakeAnswersobjectrequired
notesstring | nullrequired
platformstringrequired
meetingUrlstring | nullrequired
pageTypestringrequired
bookingLinkobject | nullrequired
servicesobject[]required
classSessionobject | nullrequired
resourceobject | nullrequired
paymentobjectrequired
cancellationobject | nullrequired
rescheduleProposalobject | nullrequired
rescheduleRevisionintegerrequired
waitlistedbooleanrequired
seriesIdstring | nullrequired
hostobject | nullrequired
isOwnBookingbooleanrequired
canManagebooleanrequired

delete/api/v1/bookings/{bookingId}/no-show

Undo a no-show mark, so the attendee counts as confirmed again

ParameterInType
bookingIdpathstringrequired

200: The booking, no longer a no-show

FieldType
object"booking"required
idstringrequired
statusstring | nullrequired
sourcestring | nullrequired
startTimestringrequired
endTimestringrequired
schedulingTimezonestringrequired
createdAtstring | nullrequired
updatedAtstringrequired
guestobjectrequired
guestCountinteger | nullrequired
customerIdstring | nullrequired
intakeAnswersobjectrequired
notesstring | nullrequired
platformstringrequired
meetingUrlstring | nullrequired
pageTypestringrequired
bookingLinkobject | nullrequired
servicesobject[]required
classSessionobject | nullrequired
resourceobject | nullrequired
paymentobjectrequired
cancellationobject | nullrequired
rescheduleProposalobject | nullrequired
rescheduleRevisionintegerrequired
waitlistedbooleanrequired
seriesIdstring | nullrequired
hostobject | nullrequired
isOwnBookingbooleanrequired
canManagebooleanrequired

post/api/v1/quick-invites

Create a one-time booking page for one recipient, and optionally email it to them

Body

FieldType
hostIdstring
durationMinutesinteger
expiresAtstring | null
maxBookingsinteger | null
platform"In Person" | "Phone Call" | "Google Meet" | "Zoom"
locationAddressstring
descriptionstring
recipientobject
messagestring
sendboolean
languagestring

201: The one-time booking page

FieldType
object"quick_invite"required
idstringrequired
urlstringrequired
hostIdstringrequired
durationMinutesintegerrequired
expiresAtstring | nullrequired
maxBookingsinteger | nullrequired
emailedbooleanrequired

Customers

get/api/v1/customers

List the customer register, filtered by email or by changes since a time, with cursor paging

ParameterInType
limitqueryinteger
cursorquerystring
emailquerystring
updatedSincequerystring
archivedquery"true" | "false"

200: A page of customers

FieldType
object"list"required
dataCustomer[]required
nextCursorstring | nullrequired

post/api/v1/customers

Add a customer to the register; an email already registered is refused with its customer ID

Body

FieldType
emailstringrequired
namestringrequired
phonestring | null
companystring | null

201: The customer

FieldType
object"customer"required
idstringrequired
namestringrequired
emailstringrequired
phonestring | nullrequired
companystring | nullrequired
notesstringrequired
archivedbooleanrequired
createdAtstringrequired
updatedAtstringrequired

get/api/v1/customers/{customerId}

Show one customer from the register

ParameterInType
customerIdpathstringrequired

200: The customer

FieldType
object"customer"required
idstringrequired
namestringrequired
emailstringrequired
phonestring | nullrequired
companystring | nullrequired
notesstringrequired
archivedbooleanrequired
createdAtstringrequired
updatedAtstringrequired

patch/api/v1/customers/{customerId}

Change a customer's name, phone, company or notes, or archive them

ParameterInType
customerIdpathstringrequired

Body

FieldType
namestring
phonestring | null
companystring | null
notesstring
archivedboolean

200: The customer

FieldType
object"customer"required
idstringrequired
namestringrequired
emailstringrequired
phonestring | nullrequired
companystring | nullrequired
notesstringrequired
archivedbooleanrequired
createdAtstringrequired
updatedAtstringrequired

post/api/v1/customers/{customerId}/erase

Erase a customer and their personal data from every booking, as for a data-subject erasure request

Erases the customer and their personal data from every booking, like a data-subject erasure request in the dashboard. Owners and admins only; counts toward 100 erasures a day.

ParameterInType
customerIdpathstringrequired

200: The customer is erased

FieldType
object"customer"required
idstringrequired
deletedtruerequired
erasureIdstringrequired

Reports

get/api/v1/reports/bookings

Count the business's bookings by status, day, booking link and member for up to 366 days

ParameterInType
fromquerystringrequired
toquerystringrequired
timeZonequerystring
dateFieldquery"startTime" | "createdAt"

200: Booking counts

FieldType
object"booking_report"required
fromstringrequired
tostringrequired
timeZonestringrequired
dateField"startTime" | "createdAt"required
totalintegerrequired
byStatusobjectrequired
byDayobject[]required
byBookingLinkobject[]required
byMemberobject[]required

Events

get/api/v1/events

List the business's events from the last 30 days, newest first, optionally with each subject rendered as in a webhook

Each event is listed only when the credential holds the read scope of its subject: bookings:read, customers:read or booking_links:read (booking links and routing forms). With expand=data, each event has the body of a webhook delivery for it, without timestamp.

ParameterInType
typequerystring
expandquery"data"
limitqueryinteger
cursorquerystring

200: A page of events, newest first

FieldType
object"list"required
dataEvent[]required
nextCursorstring | nullrequired

Webhooks

get/api/v1/webhook-endpoints

List the business's webhook endpoints, newest first

200: Every endpoint of the business

FieldType
object"list"required
dataWebhookEndpoint[]required
nextCursornullrequired

post/api/v1/webhook-endpoints

Subscribe an HTTPS URL to events; it is verified with a signed ping, and the signing secret is returned once

Automation platforms create one endpoint per trigger when it is turned on and delete it when it is turned off (REST Hooks). Subscribing to an event family also needs its read scope. An Idempotency-Key is ignored here, because the response carries the signing secret.

Body

FieldType
urlstringrequired
descriptionstring
eventTypes"booking.created" | "booking.confirmed" | "booking.rescheduled" | "booking.cancelled" | "booking.no_show_marked" | "booking.no_show_cleared" | "booking.payment_succeeded" | "booking.payment_refunded" | "customer.created" | "customer.updated" | "customer.erased" | "booking_link.created" | "booking_link.updated" | "booking_link.deleted" | "routing_form.submitted"[]required
filtersobject
authHeaderobject

201: The endpoint, pending verification, and its signing secret

FieldType
endpointWebhookEndpointrequired
secretstringrequired

get/api/v1/webhook-endpoints/{endpointId}

Show one webhook endpoint without its secrets

ParameterInType
endpointIdpathstringrequired

200: The endpoint

FieldType
object"webhook_endpoint"required
idstringrequired
urlstringrequired
descriptionstringrequired
eventTypesstring[]required
filtersobjectrequired
statusstringrequired
disabledReasonstring | nullrequired
createdViastringrequired
managedByobject | nullrequired
authHeaderNamestring | nullrequired
apiVersionintegerrequired
verifiedAtstring | nullrequired
lastSuccessAtstring | nullrequired
secretRotationEndsAtstring | nullrequired
createdAtstringrequired
updatedAtstringrequired

patch/api/v1/webhook-endpoints/{endpointId}

Change an endpoint's URL, events, filters or authentication header, or turn it off and on

A new URL must answer the signed ping again before events resume.

ParameterInType
endpointIdpathstringrequired

Body

FieldType
urlstring
descriptionstring
eventTypes"booking.created" | "booking.confirmed" | "booking.rescheduled" | "booking.cancelled" | "booking.no_show_marked" | "booking.no_show_cleared" | "booking.payment_succeeded" | "booking.payment_refunded" | "customer.created" | "customer.updated" | "customer.erased" | "booking_link.created" | "booking_link.updated" | "booking_link.deleted" | "routing_form.submitted"[]
filtersobject
authHeaderobject | null
enabledboolean

200: The endpoint

FieldType
object"webhook_endpoint"required
idstringrequired
urlstringrequired
descriptionstringrequired
eventTypesstring[]required
filtersobjectrequired
statusstringrequired
disabledReasonstring | nullrequired
createdViastringrequired
managedByobject | nullrequired
authHeaderNamestring | nullrequired
apiVersionintegerrequired
verifiedAtstring | nullrequired
lastSuccessAtstring | nullrequired
secretRotationEndsAtstring | nullrequired
createdAtstringrequired
updatedAtstringrequired

delete/api/v1/webhook-endpoints/{endpointId}

Delete an endpoint; pending deliveries to it are dropped

ParameterInType
endpointIdpathstringrequired

200: The endpoint is deleted

FieldType
object"webhook_endpoint"required
idstringrequired
deletedtruerequired

post/api/v1/webhook-endpoints/{endpointId}/test

Send a signed webhook.ping now; a pending endpoint that answers it becomes active

ParameterInType
endpointIdpathstringrequired

200: The ping is queued

FieldType
deliveryIdstringrequired

post/api/v1/webhook-endpoints/{endpointId}/rotate-secret

Issue a new signing secret, returned once; the previous one stays valid for 24 hours

An Idempotency-Key is ignored here, because the response carries the signing secret.

ParameterInType
endpointIdpathstringrequired

200: The endpoint and its new signing secret

FieldType
endpointWebhookEndpointrequired
secretstringrequired

get/api/v1/webhook-endpoints/{endpointId}/deliveries

List an endpoint's deliveries from the last 30 days, newest first, without bodies

ParameterInType
endpointIdpathstringrequired
limitqueryinteger
cursorquerystring

200: A page of deliveries, newest first

FieldType
object"list"required
dataWebhookDelivery[]required
nextCursorstring | nullrequired

post/api/v1/webhook-deliveries/{deliveryId}/retry

Send a finished event delivery again now, with its payload rendered afresh

ParameterInType
deliveryIdpathstringrequired

200: The delivery, queued again

FieldType
object"webhook_delivery"required
idstringrequired
endpointIdstringrequired
eventIdstring | nullrequired
eventTypestringrequired
messageIdstringrequired
kindstringrequired
statusstringrequired
attemptsintegerrequired
nextAttemptAtstring | nullrequired
lastAttemptAtstring | nullrequired
lastResponseStatusinteger | nullrequired
lastLatencyMsinteger | nullrequired
lastErrorClassstring | nullrequired
deliveredAtstring | nullrequired
createdAtstringrequired