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
| Field | Type | |
|---|---|---|
apiVersion | 1 | required |
Me
get/api/v1/me
Describe the calling credential: business, key name, scopes and limits
200: The calling credential
| Field | Type | |
|---|---|---|
object | "me" | required |
organization | object | required |
credential | object | required |
actingAs | object | required |
scopes | string[] | required |
limits | object | required |
Organization
get/api/v1/organization
Show the business: name, country, category and booking language
200: The business
| Field | Type | |
|---|---|---|
object | "organization" | required |
id | string | required |
name | string | required |
slug | string | required |
country | string | null | required |
businessCategory | string | null | required |
bookingLanguage | string | null | required |
logoUrl | string | null | required |
createdAt | string | null | required |
get/api/v1/members
List the people in the business with their role and whether they take bookings
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
bookable | query | "true" | "false" |
200: A page of members
| Field | Type | |
|---|---|---|
object | "list" | required |
data | Member[] | required |
nextCursor | string | null | required |
get/api/v1/members/{memberId}
Show one person in the business
| Parameter | In | Type | |
|---|---|---|---|
memberId | path | string | required |
200: The member
| Field | Type | |
|---|---|---|
object | "member" | required |
id | string | required |
name | string | required |
email | string | required |
role | "owner" | "admin" | "member" | required |
bookable | boolean | required |
timezone | string | required |
jobTitle | string | null | required |
avatarUrl | string | null | required |
createdAt | string | null | required |
Booking links
get/api/v1/booking-links
List the business's booking links with type, public URL, hosts and whether each is on
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
type | query | "meeting" | "service" | "class" | "asset" | |
active | query | "true" | "false" |
200: A page of booking links
| Field | Type | |
|---|---|---|
object | "list" | required |
data | BookingLink[] | required |
nextCursor | string | null | required |
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
| Field | Type | |
|---|---|---|
title | string | required |
description | string | |
eventType | "one_on_one" | "group" | "round_robin" | "collective" | |
durationMinutes | integer | |
hostIds | string[] | |
platforms | "Google Meet" | "Zoom" | "Phone Call" | "In Person"[] | |
locationAddress | string | |
requiresConfirmation | boolean | |
maxGuestsPerSlot | integer | |
visibility | "public" | "unlisted" | "private" | |
intakeQuestions | object[] |
201: The new meeting link
| Field | Type | |
|---|---|---|
object | "booking_link" | required |
id | string | required |
title | string | required |
description | string | null | required |
type | string | required |
eventType | string | null | required |
active | boolean | required |
visibility | string | null | required |
url | string | required |
durationMinutes | integer | null | required |
locale | string | null | required |
ownerId | string | required |
hosts | object[] | required |
requiresConfirmation | boolean | required |
payment | object | required |
createdAt | string | null | required |
updatedAt | string | null | required |
publishedAt | string | null | required |
get/api/v1/booking-links/{bookingLinkId}
Show one booking link with its type, public URL, hosts and payment mode
| Parameter | In | Type | |
|---|---|---|---|
bookingLinkId | path | string | required |
200: The booking link
| Field | Type | |
|---|---|---|
object | "booking_link" | required |
id | string | required |
title | string | required |
description | string | null | required |
type | string | required |
eventType | string | null | required |
active | boolean | required |
visibility | string | null | required |
url | string | required |
durationMinutes | integer | null | required |
locale | string | null | required |
ownerId | string | required |
hosts | object[] | required |
requiresConfirmation | boolean | required |
payment | object | required |
createdAt | string | null | required |
updatedAt | string | null | required |
publishedAt | string | null | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
bookingLinkId | path | string | required |
Body
| Field | Type | |
|---|---|---|
sections | object | required |
200: The booking link
| Field | Type | |
|---|---|---|
object | "booking_link" | required |
id | string | required |
title | string | required |
description | string | null | required |
type | string | required |
eventType | string | null | required |
active | boolean | required |
visibility | string | null | required |
url | string | required |
durationMinutes | integer | null | required |
locale | string | null | required |
ownerId | string | required |
hosts | object[] | required |
requiresConfirmation | boolean | required |
payment | object | required |
createdAt | string | null | required |
updatedAt | string | null | required |
publishedAt | string | null | required |
delete/api/v1/booking-links/{bookingLinkId}
Delete a meeting booking link; its bookings stay
| Parameter | In | Type | |
|---|---|---|---|
bookingLinkId | path | string | required |
200: The link is deleted
| Field | Type | |
|---|---|---|
object | "booking_link" | required |
id | string | required |
deleted | true | required |
post/api/v1/booking-links/{bookingLinkId}/activate
Turn a booking link on and publish its page
| Parameter | In | Type | |
|---|---|---|---|
bookingLinkId | path | string | required |
200: The booking link, on
| Field | Type | |
|---|---|---|
object | "booking_link" | required |
id | string | required |
title | string | required |
description | string | null | required |
type | string | required |
eventType | string | null | required |
active | boolean | required |
visibility | string | null | required |
url | string | required |
durationMinutes | integer | null | required |
locale | string | null | required |
ownerId | string | required |
hosts | object[] | required |
requiresConfirmation | boolean | required |
payment | object | required |
createdAt | string | null | required |
updatedAt | string | null | required |
publishedAt | string | null | required |
post/api/v1/booking-links/{bookingLinkId}/deactivate
Turn a booking link off and withdraw its page
| Parameter | In | Type | |
|---|---|---|---|
bookingLinkId | path | string | required |
200: The booking link, off
| Field | Type | |
|---|---|---|
object | "booking_link" | required |
id | string | required |
title | string | required |
description | string | null | required |
type | string | required |
eventType | string | null | required |
active | boolean | required |
visibility | string | null | required |
url | string | required |
durationMinutes | integer | null | required |
locale | string | null | required |
ownerId | string | required |
hosts | object[] | required |
requiresConfirmation | boolean | required |
payment | object | required |
createdAt | string | null | required |
updatedAt | string | null | required |
publishedAt | string | null | required |
get/api/v1/services
List the services offered on the business's service booking links, with variants and prices
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
bookingLinkId | query | string |
200: A page of services
| Field | Type | |
|---|---|---|
object | "list" | required |
data | Service[] | required |
nextCursor | string | null | required |
get/api/v1/class-types
List the class types on the business's class booking links
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
bookingLinkId | query | string |
200: A page of class types
| Field | Type | |
|---|---|---|
object | "list" | required |
data | ClassType[] | required |
nextCursor | string | null | required |
get/api/v1/class-sessions
List scheduled class sessions with capacity and bookings, filtered by link and time
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
bookingLinkId | query | string | |
startsAfter | query | string | |
startsBefore | query | string |
200: A page of class sessions
| Field | Type | |
|---|---|---|
object | "list" | required |
data | ClassSession[] | required |
nextCursor | string | null | required |
get/api/v1/resources
List the business's bookable resources
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
active | query | "true" | "false" |
200: A page of resources
| Field | Type | |
|---|---|---|
object | "list" | required |
data | Resource[] | required |
nextCursor | string | null | required |
get/api/v1/routing-forms
List the business's routing forms and their questions
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string |
200: A page of routing forms
| Field | Type | |
|---|---|---|
object | "list" | required |
data | RoutingForm[] | required |
nextCursor | string | null | required |
get/api/v1/routing-forms/{routingFormId}/submissions
List the answers people submitted to one routing form and where each was routed
| Parameter | In | Type | |
|---|---|---|---|
routingFormId | path | string | required |
limit | query | integer | |
cursor | query | string | |
createdSince | query | string |
200: A page of submissions, oldest first
| Field | Type | |
|---|---|---|
object | "list" | required |
data | RoutingFormSubmission[] | required |
nextCursor | string | null | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
bookingLinkId | path | string | required |
from | query | string | required |
to | query | string | |
serviceIds | query | string | |
variantIds | query | string |
200: Bookable times
| Field | Type | |
|---|---|---|
object | "availability" | required |
bookingLinkId | string | required |
timeZone | string | required |
from | string | required |
to | string | required |
slots | Slot[] | 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
| Parameter | In | Type | |
|---|---|---|---|
memberId | path | string | required |
from | query | string | required |
to | query | string |
200: Busy intervals
| Field | Type | |
|---|---|---|
object | "busy_times" | required |
memberId | string | required |
from | string | required |
to | string | required |
busy | BusyTime[] | required |
get/api/v1/members/{memberId}/schedules
List one person's availability schedules with weekly hours, date overrides and rules
| Parameter | In | Type | |
|---|---|---|---|
memberId | path | string | required |
200: The member's schedules
| Field | Type | |
|---|---|---|
object | "list" | required |
data | Schedule[] | required |
nextCursor | string | null | required |
get/api/v1/schedules/{scheduleId}
Show one availability schedule with weekly hours, date overrides and rules
| Parameter | In | Type | |
|---|---|---|---|
scheduleId | path | string | required |
200: The schedule
| Field | Type | |
|---|---|---|
object | "schedule" | required |
id | string | required |
memberId | string | required |
name | string | required |
isDefault | boolean | required |
timeZone | string | required |
weeklyHours | object | required |
dateOverrides | object | required |
rules | object | required |
updatedAt | string | null | required |
put/api/v1/schedules/{scheduleId}/weekly-hours
Replace the weekly hours of an availability schedule
| Parameter | In | Type | |
|---|---|---|---|
scheduleId | path | string | required |
Body
| Field | Type | |
|---|---|---|
weeklyHours | object | required |
200: The schedule
| Field | Type | |
|---|---|---|
object | "schedule" | required |
id | string | required |
memberId | string | required |
name | string | required |
isDefault | boolean | required |
timeZone | string | required |
weeklyHours | object | required |
dateOverrides | object | required |
rules | object | required |
updatedAt | string | null | required |
put/api/v1/schedules/{scheduleId}/date-overrides
Replace the date overrides of an availability schedule: days off, or different hours on given dates
| Parameter | In | Type | |
|---|---|---|---|
scheduleId | path | string | required |
Body
| Field | Type | |
|---|---|---|
dateOverrides | object | required |
200: The schedule
| Field | Type | |
|---|---|---|
object | "schedule" | required |
id | string | required |
memberId | string | required |
name | string | required |
isDefault | boolean | required |
timeZone | string | required |
weeklyHours | object | required |
dateOverrides | object | required |
rules | object | required |
updatedAt | string | null | required |
get/api/v1/members/{memberId}/blocked-times
List one person's blocked time in a window of up to 31 days
| Parameter | In | Type | |
|---|---|---|---|
memberId | path | string | required |
from | query | string | required |
to | query | string |
200: Blocked time in the window
| Field | Type | |
|---|---|---|
object | "list" | required |
data | BlockedTime[] | required |
nextCursor | string | null | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
memberId | path | string | required |
Body
| Field | Type | |
|---|---|---|
startTime | string | required |
endTime | string | required |
label | string | |
externalId | string |
201: The blocked time
| Field | Type | |
|---|---|---|
object | "blocked_time" | required |
id | string | required |
memberId | string | required |
startTime | string | required |
endTime | string | required |
label | string | null | required |
externalId | string | null | required |
createdAt | string | required |
delete/api/v1/blocked-times/{blockedTimeId}
Remove blocked time
| Parameter | In | Type | |
|---|---|---|---|
blockedTimeId | path | string | required |
200: The block is removed
| Field | Type | |
|---|---|---|
object | "blocked_time" | required |
id | string | required |
deleted | true | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
memberId | query | string | |
status | query | "pending" | "pending_reschedule" | "confirmed" | "completed" | "cancelled" | "no_show" | |
startsAfter | query | string | |
startsBefore | query | string | |
updatedSince | query | string | |
sort | query | "startTime" | "updatedAt" | |
bookingLinkId | query | string | |
customerId | query | string | |
guestEmail | query | string |
200: A page of bookings
| Field | Type | |
|---|---|---|
object | "list" | required |
data | Booking[] | required |
nextCursor | string | null | required |
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
| Field | Type | |
|---|---|---|
bookingLinkId | string | required |
startTime | string | |
classSessionId | string | |
serviceIds | string[] | |
variantIds | string[] | |
providerMemberId | string | |
assetListingKey | string | |
durationMinutes | integer | |
guestCount | integer | |
guest | object | required |
intakeAnswers | object | |
guestConsents | object | |
notifyGuest | boolean |
201: The booking
| Field | Type | |
|---|---|---|
object | "booking" | required |
id | string | required |
status | string | null | required |
source | string | null | required |
startTime | string | required |
endTime | string | required |
schedulingTimezone | string | required |
createdAt | string | null | required |
updatedAt | string | required |
guest | object | required |
guestCount | integer | null | required |
customerId | string | null | required |
intakeAnswers | object | required |
notes | string | null | required |
platform | string | required |
meetingUrl | string | null | required |
pageType | string | required |
bookingLink | object | null | required |
services | object[] | required |
classSession | object | null | required |
resource | object | null | required |
payment | object | required |
cancellation | object | null | required |
rescheduleProposal | object | null | required |
rescheduleRevision | integer | required |
waitlisted | boolean | required |
seriesId | string | null | required |
host | object | null | required |
isOwnBooking | boolean | required |
canManage | boolean | required |
get/api/v1/bookings/{bookingId}
Show one booking in the business, including whether the caller may manage it
| Parameter | In | Type | |
|---|---|---|---|
bookingId | path | string | required |
200: The booking
| Field | Type | |
|---|---|---|
object | "booking" | required |
id | string | required |
status | string | null | required |
source | string | null | required |
startTime | string | required |
endTime | string | required |
schedulingTimezone | string | required |
createdAt | string | null | required |
updatedAt | string | required |
guest | object | required |
guestCount | integer | null | required |
customerId | string | null | required |
intakeAnswers | object | required |
notes | string | null | required |
platform | string | required |
meetingUrl | string | null | required |
pageType | string | required |
bookingLink | object | null | required |
services | object[] | required |
classSession | object | null | required |
resource | object | null | required |
payment | object | required |
cancellation | object | null | required |
rescheduleProposal | object | null | required |
rescheduleRevision | integer | required |
waitlisted | boolean | required |
seriesId | string | null | required |
host | object | null | required |
isOwnBooking | boolean | required |
canManage | boolean | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
bookingId | path | string | required |
Body
| Field | Type | |
|---|---|---|
reason | string |
200: The booking is cancelled
| Field | Type | |
|---|---|---|
cancelled | true | required |
refundPending | boolean | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
bookingId | path | string | required |
Body
| Field | Type | |
|---|---|---|
startTime | string | |
classSessionId | string | |
revision | integer |
200: The moved booking
| Field | Type | |
|---|---|---|
object | "booking" | required |
id | string | required |
status | string | null | required |
source | string | null | required |
startTime | string | required |
endTime | string | required |
schedulingTimezone | string | required |
createdAt | string | null | required |
updatedAt | string | required |
guest | object | required |
guestCount | integer | null | required |
customerId | string | null | required |
intakeAnswers | object | required |
notes | string | null | required |
platform | string | required |
meetingUrl | string | null | required |
pageType | string | required |
bookingLink | object | null | required |
services | object[] | required |
classSession | object | null | required |
resource | object | null | required |
payment | object | required |
cancellation | object | null | required |
rescheduleProposal | object | null | required |
rescheduleRevision | integer | required |
waitlisted | boolean | required |
seriesId | string | null | required |
host | object | null | required |
isOwnBooking | boolean | required |
canManage | boolean | required |
post/api/v1/bookings/{bookingId}/confirm
Approve a booking request that is waiting for confirmation and tell the guest
| Parameter | In | Type | |
|---|---|---|---|
bookingId | path | string | required |
200: The confirmed booking
| Field | Type | |
|---|---|---|
object | "booking" | required |
id | string | required |
status | string | null | required |
source | string | null | required |
startTime | string | required |
endTime | string | required |
schedulingTimezone | string | required |
createdAt | string | null | required |
updatedAt | string | required |
guest | object | required |
guestCount | integer | null | required |
customerId | string | null | required |
intakeAnswers | object | required |
notes | string | null | required |
platform | string | required |
meetingUrl | string | null | required |
pageType | string | required |
bookingLink | object | null | required |
services | object[] | required |
classSession | object | null | required |
resource | object | null | required |
payment | object | required |
cancellation | object | null | required |
rescheduleProposal | object | null | required |
rescheduleRevision | integer | required |
waitlisted | boolean | required |
seriesId | string | null | required |
host | object | null | required |
isOwnBooking | boolean | required |
canManage | boolean | required |
post/api/v1/bookings/{bookingId}/decline
Decline a booking request, tell the guest and refund any payment
| Parameter | In | Type | |
|---|---|---|---|
bookingId | path | string | required |
Body
| Field | Type | |
|---|---|---|
reason | string |
200: The declined booking
| Field | Type | |
|---|---|---|
object | "booking" | required |
id | string | required |
status | string | null | required |
source | string | null | required |
startTime | string | required |
endTime | string | required |
schedulingTimezone | string | required |
createdAt | string | null | required |
updatedAt | string | required |
guest | object | required |
guestCount | integer | null | required |
customerId | string | null | required |
intakeAnswers | object | required |
notes | string | null | required |
platform | string | required |
meetingUrl | string | null | required |
pageType | string | required |
bookingLink | object | null | required |
services | object[] | required |
classSession | object | null | required |
resource | object | null | required |
payment | object | required |
cancellation | object | null | required |
rescheduleProposal | object | null | required |
rescheduleRevision | integer | required |
waitlisted | boolean | required |
seriesId | string | null | required |
host | object | null | required |
isOwnBooking | boolean | required |
canManage | boolean | required |
post/api/v1/bookings/{bookingId}/no-show
Mark a confirmed attendee as a no-show
| Parameter | In | Type | |
|---|---|---|---|
bookingId | path | string | required |
200: The booking, marked as a no-show
| Field | Type | |
|---|---|---|
object | "booking" | required |
id | string | required |
status | string | null | required |
source | string | null | required |
startTime | string | required |
endTime | string | required |
schedulingTimezone | string | required |
createdAt | string | null | required |
updatedAt | string | required |
guest | object | required |
guestCount | integer | null | required |
customerId | string | null | required |
intakeAnswers | object | required |
notes | string | null | required |
platform | string | required |
meetingUrl | string | null | required |
pageType | string | required |
bookingLink | object | null | required |
services | object[] | required |
classSession | object | null | required |
resource | object | null | required |
payment | object | required |
cancellation | object | null | required |
rescheduleProposal | object | null | required |
rescheduleRevision | integer | required |
waitlisted | boolean | required |
seriesId | string | null | required |
host | object | null | required |
isOwnBooking | boolean | required |
canManage | boolean | required |
delete/api/v1/bookings/{bookingId}/no-show
Undo a no-show mark, so the attendee counts as confirmed again
| Parameter | In | Type | |
|---|---|---|---|
bookingId | path | string | required |
200: The booking, no longer a no-show
| Field | Type | |
|---|---|---|
object | "booking" | required |
id | string | required |
status | string | null | required |
source | string | null | required |
startTime | string | required |
endTime | string | required |
schedulingTimezone | string | required |
createdAt | string | null | required |
updatedAt | string | required |
guest | object | required |
guestCount | integer | null | required |
customerId | string | null | required |
intakeAnswers | object | required |
notes | string | null | required |
platform | string | required |
meetingUrl | string | null | required |
pageType | string | required |
bookingLink | object | null | required |
services | object[] | required |
classSession | object | null | required |
resource | object | null | required |
payment | object | required |
cancellation | object | null | required |
rescheduleProposal | object | null | required |
rescheduleRevision | integer | required |
waitlisted | boolean | required |
seriesId | string | null | required |
host | object | null | required |
isOwnBooking | boolean | required |
canManage | boolean | required |
post/api/v1/quick-invites
Create a one-time booking page for one recipient, and optionally email it to them
Body
| Field | Type | |
|---|---|---|
hostId | string | |
durationMinutes | integer | |
expiresAt | string | null | |
maxBookings | integer | null | |
platform | "In Person" | "Phone Call" | "Google Meet" | "Zoom" | |
locationAddress | string | |
description | string | |
recipient | object | |
message | string | |
send | boolean | |
language | string |
201: The one-time booking page
| Field | Type | |
|---|---|---|
object | "quick_invite" | required |
id | string | required |
url | string | required |
hostId | string | required |
durationMinutes | integer | required |
expiresAt | string | null | required |
maxBookings | integer | null | required |
emailed | boolean | required |
Customers
get/api/v1/customers
List the customer register, filtered by email or by changes since a time, with cursor paging
| Parameter | In | Type | |
|---|---|---|---|
limit | query | integer | |
cursor | query | string | |
email | query | string | |
updatedSince | query | string | |
archived | query | "true" | "false" |
200: A page of customers
| Field | Type | |
|---|---|---|
object | "list" | required |
data | Customer[] | required |
nextCursor | string | null | required |
post/api/v1/customers
Add a customer to the register; an email already registered is refused with its customer ID
Body
| Field | Type | |
|---|---|---|
email | string | required |
name | string | required |
phone | string | null | |
company | string | null |
201: The customer
| Field | Type | |
|---|---|---|
object | "customer" | required |
id | string | required |
name | string | required |
email | string | required |
phone | string | null | required |
company | string | null | required |
notes | string | required |
archived | boolean | required |
createdAt | string | required |
updatedAt | string | required |
get/api/v1/customers/{customerId}
Show one customer from the register
| Parameter | In | Type | |
|---|---|---|---|
customerId | path | string | required |
200: The customer
| Field | Type | |
|---|---|---|
object | "customer" | required |
id | string | required |
name | string | required |
email | string | required |
phone | string | null | required |
company | string | null | required |
notes | string | required |
archived | boolean | required |
createdAt | string | required |
updatedAt | string | required |
patch/api/v1/customers/{customerId}
Change a customer's name, phone, company or notes, or archive them
| Parameter | In | Type | |
|---|---|---|---|
customerId | path | string | required |
Body
| Field | Type | |
|---|---|---|
name | string | |
phone | string | null | |
company | string | null | |
notes | string | |
archived | boolean |
200: The customer
| Field | Type | |
|---|---|---|
object | "customer" | required |
id | string | required |
name | string | required |
email | string | required |
phone | string | null | required |
company | string | null | required |
notes | string | required |
archived | boolean | required |
createdAt | string | required |
updatedAt | string | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
customerId | path | string | required |
200: The customer is erased
| Field | Type | |
|---|---|---|
object | "customer" | required |
id | string | required |
deleted | true | required |
erasureId | string | required |
Reports
get/api/v1/reports/bookings
Count the business's bookings by status, day, booking link and member for up to 366 days
| Parameter | In | Type | |
|---|---|---|---|
from | query | string | required |
to | query | string | required |
timeZone | query | string | |
dateField | query | "startTime" | "createdAt" |
200: Booking counts
| Field | Type | |
|---|---|---|
object | "booking_report" | required |
from | string | required |
to | string | required |
timeZone | string | required |
dateField | "startTime" | "createdAt" | required |
total | integer | required |
byStatus | object | required |
byDay | object[] | required |
byBookingLink | object[] | required |
byMember | object[] | 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.
| Parameter | In | Type | |
|---|---|---|---|
type | query | string | |
expand | query | "data" | |
limit | query | integer | |
cursor | query | string |
200: A page of events, newest first
| Field | Type | |
|---|---|---|
object | "list" | required |
data | Event[] | required |
nextCursor | string | null | required |
Webhooks
get/api/v1/webhook-endpoints
List the business's webhook endpoints, newest first
200: Every endpoint of the business
| Field | Type | |
|---|---|---|
object | "list" | required |
data | WebhookEndpoint[] | required |
nextCursor | null | required |
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
| Field | Type | |
|---|---|---|
url | string | required |
description | string | |
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 |
filters | object | |
authHeader | object |
201: The endpoint, pending verification, and its signing secret
| Field | Type | |
|---|---|---|
endpoint | WebhookEndpoint | required |
secret | string | required |
get/api/v1/webhook-endpoints/{endpointId}
Show one webhook endpoint without its secrets
| Parameter | In | Type | |
|---|---|---|---|
endpointId | path | string | required |
200: The endpoint
| Field | Type | |
|---|---|---|
object | "webhook_endpoint" | required |
id | string | required |
url | string | required |
description | string | required |
eventTypes | string[] | required |
filters | object | required |
status | string | required |
disabledReason | string | null | required |
createdVia | string | required |
managedBy | object | null | required |
authHeaderName | string | null | required |
apiVersion | integer | required |
verifiedAt | string | null | required |
lastSuccessAt | string | null | required |
secretRotationEndsAt | string | null | required |
createdAt | string | required |
updatedAt | string | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
endpointId | path | string | required |
Body
| Field | Type | |
|---|---|---|
url | string | |
description | string | |
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"[] | |
filters | object | |
authHeader | object | null | |
enabled | boolean |
200: The endpoint
| Field | Type | |
|---|---|---|
object | "webhook_endpoint" | required |
id | string | required |
url | string | required |
description | string | required |
eventTypes | string[] | required |
filters | object | required |
status | string | required |
disabledReason | string | null | required |
createdVia | string | required |
managedBy | object | null | required |
authHeaderName | string | null | required |
apiVersion | integer | required |
verifiedAt | string | null | required |
lastSuccessAt | string | null | required |
secretRotationEndsAt | string | null | required |
createdAt | string | required |
updatedAt | string | required |
delete/api/v1/webhook-endpoints/{endpointId}
Delete an endpoint; pending deliveries to it are dropped
| Parameter | In | Type | |
|---|---|---|---|
endpointId | path | string | required |
200: The endpoint is deleted
| Field | Type | |
|---|---|---|
object | "webhook_endpoint" | required |
id | string | required |
deleted | true | required |
post/api/v1/webhook-endpoints/{endpointId}/test
Send a signed webhook.ping now; a pending endpoint that answers it becomes active
| Parameter | In | Type | |
|---|---|---|---|
endpointId | path | string | required |
200: The ping is queued
| Field | Type | |
|---|---|---|
deliveryId | string | required |
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.
| Parameter | In | Type | |
|---|---|---|---|
endpointId | path | string | required |
200: The endpoint and its new signing secret
| Field | Type | |
|---|---|---|
endpoint | WebhookEndpoint | required |
secret | string | required |
get/api/v1/webhook-endpoints/{endpointId}/deliveries
List an endpoint's deliveries from the last 30 days, newest first, without bodies
| Parameter | In | Type | |
|---|---|---|---|
endpointId | path | string | required |
limit | query | integer | |
cursor | query | string |
200: A page of deliveries, newest first
| Field | Type | |
|---|---|---|
object | "list" | required |
data | WebhookDelivery[] | required |
nextCursor | string | null | required |
post/api/v1/webhook-deliveries/{deliveryId}/retry
Send a finished event delivery again now, with its payload rendered afresh
| Parameter | In | Type | |
|---|---|---|---|
deliveryId | path | string | required |
200: The delivery, queued again
| Field | Type | |
|---|---|---|
object | "webhook_delivery" | required |
id | string | required |
endpointId | string | required |
eventId | string | null | required |
eventType | string | required |
messageId | string | required |
kind | string | required |
status | string | required |
attempts | integer | required |
nextAttemptAt | string | null | required |
lastAttemptAt | string | null | required |
lastResponseStatus | integer | null | required |
lastLatencyMs | integer | null | required |
lastErrorClass | string | null | required |
deliveredAt | string | null | required |
createdAt | string | required |