API reference

Booking Pages

Booking Pages endpoints.

MethodPathSummary
GET/v1/account/booking-pagesEvery booking page the member can see, personal and group, with what stops each taking bookings
GET/v1/account/groups/{groupId}/booking-pagesA community's group booking pages, its link name, who can be on a page, and its services
POST/v1/account/groups/{groupId}/booking-pagesMake a group booking page for the community. Without members, it gets the community's staff who take meetings
PATCH/v1/account/groups/{groupId}/booking-pages/{pageId}Change a group page's settings, link or members. An old link keeps working for 90 days
DELETE/v1/account/groups/{groupId}/booking-pages/{pageId}Remove a group page. One with meetings is archived, so they keep their history
POST/v1/account/groups/{groupId}/booking-pages/{pageId}/pauseStop a group page taking bookings; meetings already booked stay
POST/v1/account/groups/{groupId}/booking-pages/{pageId}/resumeTake bookings on a group page again
PUT/v1/account/groups/{groupId}/booking-slugThe community's booking link name, shared with rep link names. Old page links keep working for 90 days

Every booking page the member can see, personal and group, with what stops each taking bookings#

GET /v1/account/booking-pages

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Query parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)NoID (grp_…)
kindenumNoOne of: "personal", "group".
statusenumNoOne of: "active", "paused", "archived".

Response 200

FieldTypeRequiredDescription
pagesarray<BookingPageOverviewRow>Yes—
pages[].bookingsThisMonthintegerYes—
pages[].groupIdstring (grp_… ID)YesID (grp_…)
pages[].groupNamestringYes—
pages[].idstring (bpg_… ID)YesID (bpg_…)
pages[].kindenumYesOne of: "personal", "group".
pages[].memberCountintegerYes—
pages[].ownerNamestring | nullYes—
pages[].ownerUserIdstring (usr_… ID) | nullYes—
pages[].pausedByenum | nullYesOne of: "owner", "admin".
pages[].slugstringYes—
pages[].statusenumYesOne of: "active", "paused", "archived".
pages[].titlestringYes—
pages[].urlstring | nullYes—
pages[].warningsarray<string>Yes—

Errors: 400, 401, 402, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/booking-pages" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

A community's group booking pages, its link name, who can be on a page, and its services#

GET /v1/account/groups/{groupId}/booking-pages

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)YesID (grp_…)

Response 200

FieldTypeRequiredDescription
accountSlugstringYes—
bookingAppUrlstringYes—
bookingSlugstring | nullYes—
groupIdstring (grp_… ID)YesID (grp_…)
pagesarray<GroupBookingPage>Yes—
pages[].bookingsThisMonthintegerYes—
pages[].groupIdstring (grp_… ID)YesID (grp_…)
pages[].idstring (bpg_… ID)YesID (bpg_…)
pages[].membersarray<object>Yes—
pages[].members[].bookablebooleanYes—
pages[].members[].calendarenumYesOne of: "connected", "crm", "none".
pages[].members[].emailstring | nullYes—
pages[].members[].idstring (bpm_… ID)YesID (bpm_…)
pages[].members[].namestringYes—
pages[].members[].onStaffbooleanYes—
pages[].members[].photoUrlstring | nullYes—
pages[].members[].priorityenumYesOne of: "high", "medium", "low".
pages[].members[].scheduleIdstring (avs_… ID) | nullYes—
pages[].members[].servicesarray<string> | nullYes—
pages[].members[].titlestring | nullYes—
pages[].members[].userIdstring (usr_… ID)YesID (usr_…)
pages[].members[].weightintegerYes—
pages[].pausedByenum | nullYesOne of: "owner", "admin".
pages[].settingsBookingPageSettingsYes—
pages[].settings.assignmentobject | objectYesDefault: \{"mode":"round_robin","strategy":"equal"\}.
pages[].settings.assignment.modeconstantYes(variant 1) Always "round_robin".
pages[].settings.assignment.strategyenumYes(variant 1) One of: "equal", "most_available". Default: "equal".
pages[].settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
pages[].settings.brandIdstring (brd_… ID) | nullYes—
pages[].settings.bufferAfterMinutesintegerYesBetween 0 and 120. Default: 0.
pages[].settings.bufferBeforeMinutesintegerYesBetween 0 and 120. Default: 0.
pages[].settings.colorstring | nullYesPattern: ^#[0-9a-f]\{6\}$.
pages[].settings.coverPhotostring (uri) | string (uri) | nullYes—
pages[].settings.dailyLimitinteger | nullYesBetween 1 and 50.
pages[].settings.descriptionstringYesUp to 1000 characters. Default: "".
pages[].settings.durationsarray<constant | constant | constant | constant>YesUp to 4 items. Default: [30].
pages[].settings.incrementconstant | constant | constant | constantYesDefault: 30.
pages[].settings.locationobject | object | object | object | objectYesDefault: \{"kind":"in_person"\}.
pages[].settings.location.kindconstantYes(variant 1) Always "in_person".
pages[].settings.location.kindconstantYes(variant 2) Always "phone_invitee".
pages[].settings.location.kindconstantYes(variant 3) Always "phone_rep".
pages[].settings.location.phonestringYes(variant 3) 7–32 characters.
pages[].settings.location.kindconstantYes(variant 4) Always "video".
pages[].settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
pages[].settings.location.kindconstantYes(variant 5) Always "custom".
pages[].settings.location.textstringYes(variant 5) 1–200 characters.
pages[].settings.meetingTypestring | nullYesUp to 64 characters.
pages[].settings.minNoticeMinutesintegerYesBetween 0 and 43200. Default: 240.
pages[].settings.pageHoursarray<object> | nullYesUp to 50 items.
pages[].settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
pages[].settings.pageHours[].endstring | constantYes—
pages[].settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
pages[].settings.preferLeadRepbooleanYesDefault: true.
pages[].settings.questionsarray<object>YesUp to 10 items. Default: [].
pages[].settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
pages[].settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
pages[].settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
pages[].settings.questions[].labelstringYes1–200 characters.
pages[].settings.questions[].optionsarray<string>NoUp to 20 items.
pages[].settings.questions[].requiredbooleanYesDefault: false.
pages[].settings.redirectUrlstring (uri) | nullYesUp to 2000 characters.
pages[].settings.reminderDayBeforebooleanYesDefault: true.
pages[].settings.reminderTwoHoursbooleanYesDefault: true.
pages[].settings.requireEmailbooleanYesDefault: true.
pages[].settings.requirePhonebooleanYesDefault: true.
pages[].settings.scheduleIdstring | nullYesUp to 40 characters.
pages[].settings.serviceobject | object | objectYesDefault: \{"kind":"none"\}.
pages[].settings.service.kindconstantYes(variant 1) Always "none".
pages[].settings.service.kindconstantYes(variant 2) Always "fixed".
pages[].settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
pages[].settings.service.kindconstantYes(variant 3) Always "ask".
pages[].settings.serviceCoverPhotobooleanYesDefault: false.
pages[].settings.titlestringYes1–80 characters.
pages[].settings.windowobject | objectYesDefault: \{"days":30,"kind":"rolling"\}.
pages[].settings.window.daysintegerYes(variant 1) Between 1 and 365.
pages[].settings.window.kindconstantYes(variant 1) Always "rolling".
pages[].settings.window.fromstring (date)Yes(variant 2)
pages[].settings.window.kindconstantYes(variant 2) Always "range".
pages[].settings.window.tostring (date)Yes(variant 2)
pages[].slugstringYes—
pages[].statusenumYesOne of: "active", "paused", "archived".
pages[].updatedAtstring (date-time)Yes—
pages[].urlstring | nullYes—
pages[].warningsarray<string>Yes—
peoplearray<object>Yes—
people[].calendarenumYesOne of: "connected", "crm", "none".
people[].canBeBookedHerebooleanYes—
people[].emailstringYes—
people[].isGroupRepbooleanYes—
people[].namestringYes—
people[].onStaffbooleanYes—
people[].photoUrlstring | nullYes—
people[].rolestringYes—
people[].schedulesarray<object>Yes—
people[].schedules[].idstring (avs_… ID)YesID (avs_…)
people[].schedules[].isDefaultbooleanYes—
people[].schedules[].namestringYes—
people[].titlestring | nullYes—
people[].userIdstring (usr_… ID)YesID (usr_…)
repsBySpecialtybooleanYes—
serviceWarningsarray<string>Yes—
servicesarray<object>Yes—
services[].descriptionstringYes—
services[].idstringYes—
services[].namestringYes—

Errors: 400, 401, 402, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/groups/{groupId}/booking-pages" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Make a group booking page for the community. Without members, it gets the community's staff who take meetings#

POST /v1/account/groups/{groupId}/booking-pages

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)YesID (grp_…)

Request body

application/json, required.

FieldTypeRequiredDescription
membersarray<object>NoUp to 100 items.
members[].priorityenumNoOne of: "high", "medium", "low". Default: "medium".
members[].scheduleIdstring (avs_… ID) | nullNo—
members[].servicesarray<string (srv_… ID)> | nullNoUp to 50 items.
members[].userIdstring (usr_… ID)YesID (usr_…)
members[].weightintegerNoBetween 1 and 10. Default: 1.
settingsBookingPageSettingsInputYes—
settings.assignmentobject | objectNoDefault: \{"mode":"round_robin","strategy":"equal"\}.
settings.assignment.modeconstantYes(variant 1) Always "round_robin".
settings.assignment.strategyenumNo(variant 1) One of: "equal", "most_available". Default: "equal".
settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
settings.brandIdstring (brd_… ID) | nullNo—
settings.bufferAfterMinutesintegerNoBetween 0 and 120. Default: 0.
settings.bufferBeforeMinutesintegerNoBetween 0 and 120. Default: 0.
settings.colorstring | nullNoPattern: ^#[0-9a-f]\{6\}$.
settings.coverPhotostring (uri) | string (uri) | nullNo—
settings.dailyLimitinteger | nullNoBetween 1 and 50.
settings.descriptionstringNoUp to 1000 characters. Default: "".
settings.durationsarray<constant | constant | constant | constant>NoUp to 4 items. Default: [30].
settings.incrementconstant | constant | constant | constantNoDefault: 30.
settings.locationobject | object | object | object | objectNoDefault: \{"kind":"in_person"\}.
settings.location.kindconstantYes(variant 1) Always "in_person".
settings.location.kindconstantYes(variant 2) Always "phone_invitee".
settings.location.kindconstantYes(variant 3) Always "phone_rep".
settings.location.phonestringYes(variant 3) 7–32 characters.
settings.location.kindconstantYes(variant 4) Always "video".
settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
settings.location.kindconstantYes(variant 5) Always "custom".
settings.location.textstringYes(variant 5) 1–200 characters.
settings.meetingTypestring | nullNoUp to 64 characters.
settings.minNoticeMinutesintegerNoBetween 0 and 43200. Default: 240.
settings.pageHoursarray<object> | nullNoUp to 50 items.
settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
settings.pageHours[].endstring | constantYes—
settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
settings.preferLeadRepbooleanNoDefault: true.
settings.questionsarray<object>NoUp to 10 items. Default: [].
settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
settings.questions[].labelstringYes1–200 characters.
settings.questions[].optionsarray<string>NoUp to 20 items.
settings.questions[].requiredbooleanNoDefault: false.
settings.redirectUrlstring (uri) | nullNoUp to 2000 characters.
settings.reminderDayBeforebooleanNoDefault: true.
settings.reminderTwoHoursbooleanNoDefault: true.
settings.requireEmailbooleanNoDefault: true.
settings.requirePhonebooleanNoDefault: true.
settings.scheduleIdstring | nullNoUp to 40 characters.
settings.serviceobject | object | objectNoDefault: \{"kind":"none"\}.
settings.service.kindconstantYes(variant 1) Always "none".
settings.service.kindconstantYes(variant 2) Always "fixed".
settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
settings.service.kindconstantYes(variant 3) Always "ask".
settings.serviceCoverPhotobooleanNoDefault: false.
settings.titlestringYes1–80 characters.
settings.windowobject | objectNoDefault: \{"days":30,"kind":"rolling"\}.
settings.window.daysintegerYes(variant 1) Between 1 and 365.
settings.window.kindconstantYes(variant 1) Always "rolling".
settings.window.fromstring (date)Yes(variant 2)
settings.window.kindconstantYes(variant 2) Always "range".
settings.window.tostring (date)Yes(variant 2)
slugstringNo2–60 characters. Pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$.

Response 201

FieldTypeRequiredDescription
pageGroupBookingPageYes—
page.bookingsThisMonthintegerYes—
page.groupIdstring (grp_… ID)YesID (grp_…)
page.idstring (bpg_… ID)YesID (bpg_…)
page.membersarray<object>Yes—
page.members[].bookablebooleanYes—
page.members[].calendarenumYesOne of: "connected", "crm", "none".
page.members[].emailstring | nullYes—
page.members[].idstring (bpm_… ID)YesID (bpm_…)
page.members[].namestringYes—
page.members[].onStaffbooleanYes—
page.members[].photoUrlstring | nullYes—
page.members[].priorityenumYesOne of: "high", "medium", "low".
page.members[].scheduleIdstring (avs_… ID) | nullYes—
page.members[].servicesarray<string> | nullYes—
page.members[].titlestring | nullYes—
page.members[].userIdstring (usr_… ID)YesID (usr_…)
page.members[].weightintegerYes—
page.pausedByenum | nullYesOne of: "owner", "admin".
page.settingsBookingPageSettingsYes—
page.settings.assignmentobject | objectYesDefault: \{"mode":"round_robin","strategy":"equal"\}.
page.settings.assignment.modeconstantYes(variant 1) Always "round_robin".
page.settings.assignment.strategyenumYes(variant 1) One of: "equal", "most_available". Default: "equal".
page.settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
page.settings.brandIdstring (brd_… ID) | nullYes—
page.settings.bufferAfterMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.bufferBeforeMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.colorstring | nullYesPattern: ^#[0-9a-f]\{6\}$.
page.settings.coverPhotostring (uri) | string (uri) | nullYes—
page.settings.dailyLimitinteger | nullYesBetween 1 and 50.
page.settings.descriptionstringYesUp to 1000 characters. Default: "".
page.settings.durationsarray<constant | constant | constant | constant>YesUp to 4 items. Default: [30].
page.settings.incrementconstant | constant | constant | constantYesDefault: 30.
page.settings.locationobject | object | object | object | objectYesDefault: \{"kind":"in_person"\}.
page.settings.location.kindconstantYes(variant 1) Always "in_person".
page.settings.location.kindconstantYes(variant 2) Always "phone_invitee".
page.settings.location.kindconstantYes(variant 3) Always "phone_rep".
page.settings.location.phonestringYes(variant 3) 7–32 characters.
page.settings.location.kindconstantYes(variant 4) Always "video".
page.settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
page.settings.location.kindconstantYes(variant 5) Always "custom".
page.settings.location.textstringYes(variant 5) 1–200 characters.
page.settings.meetingTypestring | nullYesUp to 64 characters.
page.settings.minNoticeMinutesintegerYesBetween 0 and 43200. Default: 240.
page.settings.pageHoursarray<object> | nullYesUp to 50 items.
page.settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
page.settings.pageHours[].endstring | constantYes—
page.settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
page.settings.preferLeadRepbooleanYesDefault: true.
page.settings.questionsarray<object>YesUp to 10 items. Default: [].
page.settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
page.settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
page.settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
page.settings.questions[].labelstringYes1–200 characters.
page.settings.questions[].optionsarray<string>NoUp to 20 items.
page.settings.questions[].requiredbooleanYesDefault: false.
page.settings.redirectUrlstring (uri) | nullYesUp to 2000 characters.
page.settings.reminderDayBeforebooleanYesDefault: true.
page.settings.reminderTwoHoursbooleanYesDefault: true.
page.settings.requireEmailbooleanYesDefault: true.
page.settings.requirePhonebooleanYesDefault: true.
page.settings.scheduleIdstring | nullYesUp to 40 characters.
page.settings.serviceobject | object | objectYesDefault: \{"kind":"none"\}.
page.settings.service.kindconstantYes(variant 1) Always "none".
page.settings.service.kindconstantYes(variant 2) Always "fixed".
page.settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
page.settings.service.kindconstantYes(variant 3) Always "ask".
page.settings.serviceCoverPhotobooleanYesDefault: false.
page.settings.titlestringYes1–80 characters.
page.settings.windowobject | objectYesDefault: \{"days":30,"kind":"rolling"\}.
page.settings.window.daysintegerYes(variant 1) Between 1 and 365.
page.settings.window.kindconstantYes(variant 1) Always "rolling".
page.settings.window.fromstring (date)Yes(variant 2)
page.settings.window.kindconstantYes(variant 2) Always "range".
page.settings.window.tostring (date)Yes(variant 2)
page.slugstringYes—
page.statusenumYesOne of: "active", "paused", "archived".
page.updatedAtstring (date-time)Yes—
page.urlstring | nullYes—
page.warningsarray<string>Yes—

Errors: 400, 401, 402, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/groups/{groupId}/booking-pages" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "settings": {
    "title": "string"
  }
}'

Change a group page's settings, link or members. An old link keeps working for 90 days#

PATCH /v1/account/groups/{groupId}/booking-pages/{pageId}

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)YesID (grp_…)
pageIdstring (bpg_… ID)YesID (bpg_…)

Request body

application/json, required.

FieldTypeRequiredDescription
membersarray<object>NoUp to 100 items.
members[].priorityenumNoOne of: "high", "medium", "low". Default: "medium".
members[].scheduleIdstring (avs_… ID) | nullNo—
members[].servicesarray<string (srv_… ID)> | nullNoUp to 50 items.
members[].userIdstring (usr_… ID)YesID (usr_…)
members[].weightintegerNoBetween 1 and 10. Default: 1.
settingsBookingPageSettingsInputNo—
settings.assignmentobject | objectNoDefault: \{"mode":"round_robin","strategy":"equal"\}.
settings.assignment.modeconstantYes(variant 1) Always "round_robin".
settings.assignment.strategyenumNo(variant 1) One of: "equal", "most_available". Default: "equal".
settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
settings.brandIdstring (brd_… ID) | nullNo—
settings.bufferAfterMinutesintegerNoBetween 0 and 120. Default: 0.
settings.bufferBeforeMinutesintegerNoBetween 0 and 120. Default: 0.
settings.colorstring | nullNoPattern: ^#[0-9a-f]\{6\}$.
settings.coverPhotostring (uri) | string (uri) | nullNo—
settings.dailyLimitinteger | nullNoBetween 1 and 50.
settings.descriptionstringNoUp to 1000 characters. Default: "".
settings.durationsarray<constant | constant | constant | constant>NoUp to 4 items. Default: [30].
settings.incrementconstant | constant | constant | constantNoDefault: 30.
settings.locationobject | object | object | object | objectNoDefault: \{"kind":"in_person"\}.
settings.location.kindconstantYes(variant 1) Always "in_person".
settings.location.kindconstantYes(variant 2) Always "phone_invitee".
settings.location.kindconstantYes(variant 3) Always "phone_rep".
settings.location.phonestringYes(variant 3) 7–32 characters.
settings.location.kindconstantYes(variant 4) Always "video".
settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
settings.location.kindconstantYes(variant 5) Always "custom".
settings.location.textstringYes(variant 5) 1–200 characters.
settings.meetingTypestring | nullNoUp to 64 characters.
settings.minNoticeMinutesintegerNoBetween 0 and 43200. Default: 240.
settings.pageHoursarray<object> | nullNoUp to 50 items.
settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
settings.pageHours[].endstring | constantYes—
settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
settings.preferLeadRepbooleanNoDefault: true.
settings.questionsarray<object>NoUp to 10 items. Default: [].
settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
settings.questions[].labelstringYes1–200 characters.
settings.questions[].optionsarray<string>NoUp to 20 items.
settings.questions[].requiredbooleanNoDefault: false.
settings.redirectUrlstring (uri) | nullNoUp to 2000 characters.
settings.reminderDayBeforebooleanNoDefault: true.
settings.reminderTwoHoursbooleanNoDefault: true.
settings.requireEmailbooleanNoDefault: true.
settings.requirePhonebooleanNoDefault: true.
settings.scheduleIdstring | nullNoUp to 40 characters.
settings.serviceobject | object | objectNoDefault: \{"kind":"none"\}.
settings.service.kindconstantYes(variant 1) Always "none".
settings.service.kindconstantYes(variant 2) Always "fixed".
settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
settings.service.kindconstantYes(variant 3) Always "ask".
settings.serviceCoverPhotobooleanNoDefault: false.
settings.titlestringYes1–80 characters.
settings.windowobject | objectNoDefault: \{"days":30,"kind":"rolling"\}.
settings.window.daysintegerYes(variant 1) Between 1 and 365.
settings.window.kindconstantYes(variant 1) Always "rolling".
settings.window.fromstring (date)Yes(variant 2)
settings.window.kindconstantYes(variant 2) Always "range".
settings.window.tostring (date)Yes(variant 2)
slugstringNo2–60 characters. Pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$.

Response 200

FieldTypeRequiredDescription
pageGroupBookingPageYes—
page.bookingsThisMonthintegerYes—
page.groupIdstring (grp_… ID)YesID (grp_…)
page.idstring (bpg_… ID)YesID (bpg_…)
page.membersarray<object>Yes—
page.members[].bookablebooleanYes—
page.members[].calendarenumYesOne of: "connected", "crm", "none".
page.members[].emailstring | nullYes—
page.members[].idstring (bpm_… ID)YesID (bpm_…)
page.members[].namestringYes—
page.members[].onStaffbooleanYes—
page.members[].photoUrlstring | nullYes—
page.members[].priorityenumYesOne of: "high", "medium", "low".
page.members[].scheduleIdstring (avs_… ID) | nullYes—
page.members[].servicesarray<string> | nullYes—
page.members[].titlestring | nullYes—
page.members[].userIdstring (usr_… ID)YesID (usr_…)
page.members[].weightintegerYes—
page.pausedByenum | nullYesOne of: "owner", "admin".
page.settingsBookingPageSettingsYes—
page.settings.assignmentobject | objectYesDefault: \{"mode":"round_robin","strategy":"equal"\}.
page.settings.assignment.modeconstantYes(variant 1) Always "round_robin".
page.settings.assignment.strategyenumYes(variant 1) One of: "equal", "most_available". Default: "equal".
page.settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
page.settings.brandIdstring (brd_… ID) | nullYes—
page.settings.bufferAfterMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.bufferBeforeMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.colorstring | nullYesPattern: ^#[0-9a-f]\{6\}$.
page.settings.coverPhotostring (uri) | string (uri) | nullYes—
page.settings.dailyLimitinteger | nullYesBetween 1 and 50.
page.settings.descriptionstringYesUp to 1000 characters. Default: "".
page.settings.durationsarray<constant | constant | constant | constant>YesUp to 4 items. Default: [30].
page.settings.incrementconstant | constant | constant | constantYesDefault: 30.
page.settings.locationobject | object | object | object | objectYesDefault: \{"kind":"in_person"\}.
page.settings.location.kindconstantYes(variant 1) Always "in_person".
page.settings.location.kindconstantYes(variant 2) Always "phone_invitee".
page.settings.location.kindconstantYes(variant 3) Always "phone_rep".
page.settings.location.phonestringYes(variant 3) 7–32 characters.
page.settings.location.kindconstantYes(variant 4) Always "video".
page.settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
page.settings.location.kindconstantYes(variant 5) Always "custom".
page.settings.location.textstringYes(variant 5) 1–200 characters.
page.settings.meetingTypestring | nullYesUp to 64 characters.
page.settings.minNoticeMinutesintegerYesBetween 0 and 43200. Default: 240.
page.settings.pageHoursarray<object> | nullYesUp to 50 items.
page.settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
page.settings.pageHours[].endstring | constantYes—
page.settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
page.settings.preferLeadRepbooleanYesDefault: true.
page.settings.questionsarray<object>YesUp to 10 items. Default: [].
page.settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
page.settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
page.settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
page.settings.questions[].labelstringYes1–200 characters.
page.settings.questions[].optionsarray<string>NoUp to 20 items.
page.settings.questions[].requiredbooleanYesDefault: false.
page.settings.redirectUrlstring (uri) | nullYesUp to 2000 characters.
page.settings.reminderDayBeforebooleanYesDefault: true.
page.settings.reminderTwoHoursbooleanYesDefault: true.
page.settings.requireEmailbooleanYesDefault: true.
page.settings.requirePhonebooleanYesDefault: true.
page.settings.scheduleIdstring | nullYesUp to 40 characters.
page.settings.serviceobject | object | objectYesDefault: \{"kind":"none"\}.
page.settings.service.kindconstantYes(variant 1) Always "none".
page.settings.service.kindconstantYes(variant 2) Always "fixed".
page.settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
page.settings.service.kindconstantYes(variant 3) Always "ask".
page.settings.serviceCoverPhotobooleanYesDefault: false.
page.settings.titlestringYes1–80 characters.
page.settings.windowobject | objectYesDefault: \{"days":30,"kind":"rolling"\}.
page.settings.window.daysintegerYes(variant 1) Between 1 and 365.
page.settings.window.kindconstantYes(variant 1) Always "rolling".
page.settings.window.fromstring (date)Yes(variant 2)
page.settings.window.kindconstantYes(variant 2) Always "range".
page.settings.window.tostring (date)Yes(variant 2)
page.slugstringYes—
page.statusenumYesOne of: "active", "paused", "archived".
page.updatedAtstring (date-time)Yes—
page.urlstring | nullYes—
page.warningsarray<string>Yes—

Errors: 400, 401, 402, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X PATCH "$ANSWERSTACK_API_URL/v1/account/groups/{groupId}/booking-pages/{pageId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "members": [
    {
      "userId": "usr_2ZPh7XbT0v9Ao4iJ3qK1mN8sRgE"
    }
  ],
  "settings": {
    "title": "string"
  },
  "slug": "string"
}'

Remove a group page. One with meetings is archived, so they keep their history#

DELETE /v1/account/groups/{groupId}/booking-pages/{pageId}

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)YesID (grp_…)
pageIdstring (bpg_… ID)YesID (bpg_…)

Response 204

No content.

Errors: 400, 401, 402, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X DELETE "$ANSWERSTACK_API_URL/v1/account/groups/{groupId}/booking-pages/{pageId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Stop a group page taking bookings; meetings already booked stay#

POST /v1/account/groups/{groupId}/booking-pages/{pageId}/pause

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)YesID (grp_…)
pageIdstring (bpg_… ID)YesID (bpg_…)

Response 200

FieldTypeRequiredDescription
pageGroupBookingPageYes—
page.bookingsThisMonthintegerYes—
page.groupIdstring (grp_… ID)YesID (grp_…)
page.idstring (bpg_… ID)YesID (bpg_…)
page.membersarray<object>Yes—
page.members[].bookablebooleanYes—
page.members[].calendarenumYesOne of: "connected", "crm", "none".
page.members[].emailstring | nullYes—
page.members[].idstring (bpm_… ID)YesID (bpm_…)
page.members[].namestringYes—
page.members[].onStaffbooleanYes—
page.members[].photoUrlstring | nullYes—
page.members[].priorityenumYesOne of: "high", "medium", "low".
page.members[].scheduleIdstring (avs_… ID) | nullYes—
page.members[].servicesarray<string> | nullYes—
page.members[].titlestring | nullYes—
page.members[].userIdstring (usr_… ID)YesID (usr_…)
page.members[].weightintegerYes—
page.pausedByenum | nullYesOne of: "owner", "admin".
page.settingsBookingPageSettingsYes—
page.settings.assignmentobject | objectYesDefault: \{"mode":"round_robin","strategy":"equal"\}.
page.settings.assignment.modeconstantYes(variant 1) Always "round_robin".
page.settings.assignment.strategyenumYes(variant 1) One of: "equal", "most_available". Default: "equal".
page.settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
page.settings.brandIdstring (brd_… ID) | nullYes—
page.settings.bufferAfterMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.bufferBeforeMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.colorstring | nullYesPattern: ^#[0-9a-f]\{6\}$.
page.settings.coverPhotostring (uri) | string (uri) | nullYes—
page.settings.dailyLimitinteger | nullYesBetween 1 and 50.
page.settings.descriptionstringYesUp to 1000 characters. Default: "".
page.settings.durationsarray<constant | constant | constant | constant>YesUp to 4 items. Default: [30].
page.settings.incrementconstant | constant | constant | constantYesDefault: 30.
page.settings.locationobject | object | object | object | objectYesDefault: \{"kind":"in_person"\}.
page.settings.location.kindconstantYes(variant 1) Always "in_person".
page.settings.location.kindconstantYes(variant 2) Always "phone_invitee".
page.settings.location.kindconstantYes(variant 3) Always "phone_rep".
page.settings.location.phonestringYes(variant 3) 7–32 characters.
page.settings.location.kindconstantYes(variant 4) Always "video".
page.settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
page.settings.location.kindconstantYes(variant 5) Always "custom".
page.settings.location.textstringYes(variant 5) 1–200 characters.
page.settings.meetingTypestring | nullYesUp to 64 characters.
page.settings.minNoticeMinutesintegerYesBetween 0 and 43200. Default: 240.
page.settings.pageHoursarray<object> | nullYesUp to 50 items.
page.settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
page.settings.pageHours[].endstring | constantYes—
page.settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
page.settings.preferLeadRepbooleanYesDefault: true.
page.settings.questionsarray<object>YesUp to 10 items. Default: [].
page.settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
page.settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
page.settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
page.settings.questions[].labelstringYes1–200 characters.
page.settings.questions[].optionsarray<string>NoUp to 20 items.
page.settings.questions[].requiredbooleanYesDefault: false.
page.settings.redirectUrlstring (uri) | nullYesUp to 2000 characters.
page.settings.reminderDayBeforebooleanYesDefault: true.
page.settings.reminderTwoHoursbooleanYesDefault: true.
page.settings.requireEmailbooleanYesDefault: true.
page.settings.requirePhonebooleanYesDefault: true.
page.settings.scheduleIdstring | nullYesUp to 40 characters.
page.settings.serviceobject | object | objectYesDefault: \{"kind":"none"\}.
page.settings.service.kindconstantYes(variant 1) Always "none".
page.settings.service.kindconstantYes(variant 2) Always "fixed".
page.settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
page.settings.service.kindconstantYes(variant 3) Always "ask".
page.settings.serviceCoverPhotobooleanYesDefault: false.
page.settings.titlestringYes1–80 characters.
page.settings.windowobject | objectYesDefault: \{"days":30,"kind":"rolling"\}.
page.settings.window.daysintegerYes(variant 1) Between 1 and 365.
page.settings.window.kindconstantYes(variant 1) Always "rolling".
page.settings.window.fromstring (date)Yes(variant 2)
page.settings.window.kindconstantYes(variant 2) Always "range".
page.settings.window.tostring (date)Yes(variant 2)
page.slugstringYes—
page.statusenumYesOne of: "active", "paused", "archived".
page.updatedAtstring (date-time)Yes—
page.urlstring | nullYes—
page.warningsarray<string>Yes—

Errors: 400, 401, 402, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/groups/{groupId}/booking-pages/{pageId}/pause" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Take bookings on a group page again#

POST /v1/account/groups/{groupId}/booking-pages/{pageId}/resume

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)YesID (grp_…)
pageIdstring (bpg_… ID)YesID (bpg_…)

Response 200

FieldTypeRequiredDescription
pageGroupBookingPageYes—
page.bookingsThisMonthintegerYes—
page.groupIdstring (grp_… ID)YesID (grp_…)
page.idstring (bpg_… ID)YesID (bpg_…)
page.membersarray<object>Yes—
page.members[].bookablebooleanYes—
page.members[].calendarenumYesOne of: "connected", "crm", "none".
page.members[].emailstring | nullYes—
page.members[].idstring (bpm_… ID)YesID (bpm_…)
page.members[].namestringYes—
page.members[].onStaffbooleanYes—
page.members[].photoUrlstring | nullYes—
page.members[].priorityenumYesOne of: "high", "medium", "low".
page.members[].scheduleIdstring (avs_… ID) | nullYes—
page.members[].servicesarray<string> | nullYes—
page.members[].titlestring | nullYes—
page.members[].userIdstring (usr_… ID)YesID (usr_…)
page.members[].weightintegerYes—
page.pausedByenum | nullYesOne of: "owner", "admin".
page.settingsBookingPageSettingsYes—
page.settings.assignmentobject | objectYesDefault: \{"mode":"round_robin","strategy":"equal"\}.
page.settings.assignment.modeconstantYes(variant 1) Always "round_robin".
page.settings.assignment.strategyenumYes(variant 1) One of: "equal", "most_available". Default: "equal".
page.settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
page.settings.brandIdstring (brd_… ID) | nullYes—
page.settings.bufferAfterMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.bufferBeforeMinutesintegerYesBetween 0 and 120. Default: 0.
page.settings.colorstring | nullYesPattern: ^#[0-9a-f]\{6\}$.
page.settings.coverPhotostring (uri) | string (uri) | nullYes—
page.settings.dailyLimitinteger | nullYesBetween 1 and 50.
page.settings.descriptionstringYesUp to 1000 characters. Default: "".
page.settings.durationsarray<constant | constant | constant | constant>YesUp to 4 items. Default: [30].
page.settings.incrementconstant | constant | constant | constantYesDefault: 30.
page.settings.locationobject | object | object | object | objectYesDefault: \{"kind":"in_person"\}.
page.settings.location.kindconstantYes(variant 1) Always "in_person".
page.settings.location.kindconstantYes(variant 2) Always "phone_invitee".
page.settings.location.kindconstantYes(variant 3) Always "phone_rep".
page.settings.location.phonestringYes(variant 3) 7–32 characters.
page.settings.location.kindconstantYes(variant 4) Always "video".
page.settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
page.settings.location.kindconstantYes(variant 5) Always "custom".
page.settings.location.textstringYes(variant 5) 1–200 characters.
page.settings.meetingTypestring | nullYesUp to 64 characters.
page.settings.minNoticeMinutesintegerYesBetween 0 and 43200. Default: 240.
page.settings.pageHoursarray<object> | nullYesUp to 50 items.
page.settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
page.settings.pageHours[].endstring | constantYes—
page.settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
page.settings.preferLeadRepbooleanYesDefault: true.
page.settings.questionsarray<object>YesUp to 10 items. Default: [].
page.settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
page.settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
page.settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
page.settings.questions[].labelstringYes1–200 characters.
page.settings.questions[].optionsarray<string>NoUp to 20 items.
page.settings.questions[].requiredbooleanYesDefault: false.
page.settings.redirectUrlstring (uri) | nullYesUp to 2000 characters.
page.settings.reminderDayBeforebooleanYesDefault: true.
page.settings.reminderTwoHoursbooleanYesDefault: true.
page.settings.requireEmailbooleanYesDefault: true.
page.settings.requirePhonebooleanYesDefault: true.
page.settings.scheduleIdstring | nullYesUp to 40 characters.
page.settings.serviceobject | object | objectYesDefault: \{"kind":"none"\}.
page.settings.service.kindconstantYes(variant 1) Always "none".
page.settings.service.kindconstantYes(variant 2) Always "fixed".
page.settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
page.settings.service.kindconstantYes(variant 3) Always "ask".
page.settings.serviceCoverPhotobooleanYesDefault: false.
page.settings.titlestringYes1–80 characters.
page.settings.windowobject | objectYesDefault: \{"days":30,"kind":"rolling"\}.
page.settings.window.daysintegerYes(variant 1) Between 1 and 365.
page.settings.window.kindconstantYes(variant 1) Always "rolling".
page.settings.window.fromstring (date)Yes(variant 2)
page.settings.window.kindconstantYes(variant 2) Always "range".
page.settings.window.tostring (date)Yes(variant 2)
page.slugstringYes—
page.statusenumYesOne of: "active", "paused", "archived".
page.updatedAtstring (date-time)Yes—
page.urlstring | nullYes—
page.warningsarray<string>Yes—

Errors: 400, 401, 402, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/groups/{groupId}/booking-pages/{pageId}/resume" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

The community's booking link name, shared with rep link names. Old page links keep working for 90 days#

PUT /v1/account/groups/{groupId}/booking-slug

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
groupIdstring (grp_… ID)YesID (grp_…)

Request body

application/json, required.

FieldTypeRequiredDescription
slugstringYes2–60 characters. Pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$.

Response 200

FieldTypeRequiredDescription
accountSlugstringYes—
bookingAppUrlstringYes—
bookingSlugstring | nullYes—
groupIdstring (grp_… ID)YesID (grp_…)
pagesarray<GroupBookingPage>Yes—
pages[].bookingsThisMonthintegerYes—
pages[].groupIdstring (grp_… ID)YesID (grp_…)
pages[].idstring (bpg_… ID)YesID (bpg_…)
pages[].membersarray<object>Yes—
pages[].members[].bookablebooleanYes—
pages[].members[].calendarenumYesOne of: "connected", "crm", "none".
pages[].members[].emailstring | nullYes—
pages[].members[].idstring (bpm_… ID)YesID (bpm_…)
pages[].members[].namestringYes—
pages[].members[].onStaffbooleanYes—
pages[].members[].photoUrlstring | nullYes—
pages[].members[].priorityenumYesOne of: "high", "medium", "low".
pages[].members[].scheduleIdstring (avs_… ID) | nullYes—
pages[].members[].servicesarray<string> | nullYes—
pages[].members[].titlestring | nullYes—
pages[].members[].userIdstring (usr_… ID)YesID (usr_…)
pages[].members[].weightintegerYes—
pages[].pausedByenum | nullYesOne of: "owner", "admin".
pages[].settingsBookingPageSettingsYes—
pages[].settings.assignmentobject | objectYesDefault: \{"mode":"round_robin","strategy":"equal"\}.
pages[].settings.assignment.modeconstantYes(variant 1) Always "round_robin".
pages[].settings.assignment.strategyenumYes(variant 1) One of: "equal", "most_available". Default: "equal".
pages[].settings.assignment.modeconstantYes(variant 2) Always "invitee_chooses".
pages[].settings.brandIdstring (brd_… ID) | nullYes—
pages[].settings.bufferAfterMinutesintegerYesBetween 0 and 120. Default: 0.
pages[].settings.bufferBeforeMinutesintegerYesBetween 0 and 120. Default: 0.
pages[].settings.colorstring | nullYesPattern: ^#[0-9a-f]\{6\}$.
pages[].settings.coverPhotostring (uri) | string (uri) | nullYes—
pages[].settings.dailyLimitinteger | nullYesBetween 1 and 50.
pages[].settings.descriptionstringYesUp to 1000 characters. Default: "".
pages[].settings.durationsarray<constant | constant | constant | constant>YesUp to 4 items. Default: [30].
pages[].settings.incrementconstant | constant | constant | constantYesDefault: 30.
pages[].settings.locationobject | object | object | object | objectYesDefault: \{"kind":"in_person"\}.
pages[].settings.location.kindconstantYes(variant 1) Always "in_person".
pages[].settings.location.kindconstantYes(variant 2) Always "phone_invitee".
pages[].settings.location.kindconstantYes(variant 3) Always "phone_rep".
pages[].settings.location.phonestringYes(variant 3) 7–32 characters.
pages[].settings.location.kindconstantYes(variant 4) Always "video".
pages[].settings.location.urlstring (uri)Yes(variant 4) A https:// link Up to 2000 characters.
pages[].settings.location.kindconstantYes(variant 5) Always "custom".
pages[].settings.location.textstringYes(variant 5) 1–200 characters.
pages[].settings.meetingTypestring | nullYesUp to 64 characters.
pages[].settings.minNoticeMinutesintegerYesBetween 0 and 43200. Default: 240.
pages[].settings.pageHoursarray<object> | nullYesUp to 50 items.
pages[].settings.pageHours[].daysarray<enum>YesItems: "mon", "tue", "wed", "thu", "fri", "sat", "sun".
pages[].settings.pageHours[].endstring | constantYes—
pages[].settings.pageHours[].startstringYesPattern: ^([01]\d|2[0-3]):[0-5]\d$.
pages[].settings.preferLeadRepbooleanYesDefault: true.
pages[].settings.questionsarray<object>YesUp to 10 items. Default: [].
pages[].settings.questions[].fieldKeystringNo1–64 characters. Pattern: ^[a-z][a-z0-9_]*$.
pages[].settings.questions[].idstringYes1–64 characters. Pattern: ^[a-z0-9][a-z0-9_-]*$.
pages[].settings.questions[].kindenumYesOne of: "short_text", "long_text", "single_choice", "multiple_choice", "yes_no", "date".
pages[].settings.questions[].labelstringYes1–200 characters.
pages[].settings.questions[].optionsarray<string>NoUp to 20 items.
pages[].settings.questions[].requiredbooleanYesDefault: false.
pages[].settings.redirectUrlstring (uri) | nullYesUp to 2000 characters.
pages[].settings.reminderDayBeforebooleanYesDefault: true.
pages[].settings.reminderTwoHoursbooleanYesDefault: true.
pages[].settings.requireEmailbooleanYesDefault: true.
pages[].settings.requirePhonebooleanYesDefault: true.
pages[].settings.scheduleIdstring | nullYesUp to 40 characters.
pages[].settings.serviceobject | object | objectYesDefault: \{"kind":"none"\}.
pages[].settings.service.kindconstantYes(variant 1) Always "none".
pages[].settings.service.kindconstantYes(variant 2) Always "fixed".
pages[].settings.service.serviceIdstring (srv_… ID)Yes(variant 2) ID (srv_…)
pages[].settings.service.kindconstantYes(variant 3) Always "ask".
pages[].settings.serviceCoverPhotobooleanYesDefault: false.
pages[].settings.titlestringYes1–80 characters.
pages[].settings.windowobject | objectYesDefault: \{"days":30,"kind":"rolling"\}.
pages[].settings.window.daysintegerYes(variant 1) Between 1 and 365.
pages[].settings.window.kindconstantYes(variant 1) Always "rolling".
pages[].settings.window.fromstring (date)Yes(variant 2)
pages[].settings.window.kindconstantYes(variant 2) Always "range".
pages[].settings.window.tostring (date)Yes(variant 2)
pages[].slugstringYes—
pages[].statusenumYesOne of: "active", "paused", "archived".
pages[].updatedAtstring (date-time)Yes—
pages[].urlstring | nullYes—
pages[].warningsarray<string>Yes—
peoplearray<object>Yes—
people[].calendarenumYesOne of: "connected", "crm", "none".
people[].canBeBookedHerebooleanYes—
people[].emailstringYes—
people[].isGroupRepbooleanYes—
people[].namestringYes—
people[].onStaffbooleanYes—
people[].photoUrlstring | nullYes—
people[].rolestringYes—
people[].schedulesarray<object>Yes—
people[].schedules[].idstring (avs_… ID)YesID (avs_…)
people[].schedules[].isDefaultbooleanYes—
people[].schedules[].namestringYes—
people[].titlestring | nullYes—
people[].userIdstring (usr_… ID)YesID (usr_…)
repsBySpecialtybooleanYes—
serviceWarningsarray<string>Yes—
servicesarray<object>Yes—
services[].descriptionstringYes—
services[].idstringYes—
services[].namestringYes—

Errors: 400, 401, 402, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X PUT "$ANSWERSTACK_API_URL/v1/account/groups/{groupId}/booking-slug" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "slug": "string"
}'