Skip to main content

CreateServiceRequest

Request schema for creating a service.

appointment_typestring

The type of appointment.

Possible values: [in_person, virtual]

booking_policy object

A booking policy defines the rules for booking a service from public booking interfaces.

advance_notice objectrequired

A policy for requiring minimum advance notice.

enabledbooleanrequired

Whether advance notice is enabled.

minimum_durationstringnullablerequired

The minimum duration of advance notice.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

allow_bookingbooleanrequired

Whether public booking is allowed for the service.

disabled_messagestringnullablerequired

The message to display when public booking is disabled.

hold objectrequired

A policy for temporarily reserving a slot during the multi-step booking flow.

durationstringnullablerequired

The duration of the hold.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

enabledbooleanrequired

Whether slot holds are enabled for the service.

maximize_utilization objectrequired

Avoid presenting overlapping time slots for service providers to eliminate gaps in the schedule.

enabledbooleanrequired

Whether maximize utilization is enabled for the service.

buffer_policy object

A policy for shielding time before and/or after appointments from being booked (e.g. prep time before, charting time after). The policy is captured on the appointment at booking time and continues to shield the surrounding time even if the service configuration changes later.

after_durationstringnullable

The buffer duration after the appointment.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

before_durationstringnullable

The buffer duration before the appointment.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

enabledbooleanrequired

Whether buffers are enabled for the service.

cancellation_policy object

A cancellation policy defines the rules for canceling a service from public booking interfaces.

advance_notice objectrequired

A policy for requiring minimum advance notice.

enabledbooleanrequired

Whether advance notice is enabled.

minimum_durationstringnullablerequired

The minimum duration of advance notice.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

allow_cancellationbooleanrequired

Whether public cancellation is allowed for the service.

disabled_messagestringnullablerequired

The message to display when public cancellation is disabled.

change_policy_textstring

Displayed to clients in follow-up communication. Use this to explain any important rules about cancellations or rescheduling.

Example: Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.
durationstring

The duration of time slots in ISO-8601 duration format.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

Example: PT1H30M
form_idsstring[]

Optional list of form IDs to attach to the service. Each form is attached as required, with sort order matching the array order.

Possible values: Value must match regular expression ^frm_\w{12}$

internal_namestringnullable

An optional internal label for admin use. When set, this is displayed in the admin UI instead of the public name.

metadata object

Set of key-value pairs to attach to this service. Maximum size is 16 KB.

property name*any

Set of key-value pairs to attach to this service. Maximum size is 16 KB.

namestringrequired

The service name.

provider_notifications object

Configuration for staff notification emails on a service, including which notification types are enabled and who receives them.

additional_recipientsemail[]required

Additional email addresses that receive staff notification emails for this service.

notify_providerbooleanrequired

Whether the assigned provider receives notification emails for this service.

types object[]required

Array of enabled staff notification types for the service.

  • Array [
  • typestringrequired

    The notification type.

    Possible values: [new_appointment, rescheduled, canceled]

  • ]
  • rescheduling_policy object

    A rescheduling policy defines the rules for rescheduling a service from public booking interfaces.

    advance_notice objectrequired

    A policy for requiring minimum advance notice.

    enabledbooleanrequired

    Whether advance notice is enabled.

    minimum_durationstringnullablerequired

    The minimum duration of advance notice.

    Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

    allow_reschedulingbooleanrequired

    Whether public rescheduling is allowed for the service.

    disabled_messagestringnullablerequired

    The message to display when public rescheduling is disabled.

    slot_rules object[]

    Array of slot rules for the service.

  • Array [
  • recurrence_rule objectrequired

    A recurrence rule describes a repeating pattern of times. Recurrences rules in SavvyCal are modeled after the conventions of iCalendar recurrence rules (RRULE), but are a subset of the full specification.

    bydaystring[]

    The days of the week on which the recurrence occurs.

    Possible values: Value must match regular expression (mo|tu|we|th|fr|sa|su)$

    Example: ["mo","we","fr"]
    countintegernullable

    Number of occurrences at which to end the recurrence.

    Possible values: >= 1

    freqstringrequired

    The frequency of the recurrence.

    Possible values: [daily, weekly]

    intervalinteger

    How often the recurrence rule repeats.

    Possible values: >= 1

    Example: 2
    untildatenullable

    Date at which to end the recurrence (in ISO-8601 format).

    Example: 2024-01-02
    start_timesstring[]required

    Array of start times for slots.

    Possible values: Value must match regular expression ^\d{2}:\d{2}$

  • ]
  • CreateServiceRequest
    {
    "appointment_type": "virtual",
    "booking_policy": {
    "advance_notice": {
    "enabled": true,
    "minimum_duration": "PT1H"
    },
    "allow_booking": true,
    "disabled_message": "Booking is disabled for this service.",
    "hold": {
    "duration": "PT10M",
    "enabled": true
    },
    "maximize_utilization": {
    "enabled": true
    }
    },
    "buffer_policy": {
    "after_duration": "PT1H",
    "before_duration": "PT15M",
    "enabled": true
    },
    "cancellation_policy": {
    "advance_notice": {
    "enabled": true,
    "minimum_duration": "PT1H"
    },
    "allow_cancellation": true,
    "disabled_message": "Cancellation is disabled for this service."
    },
    "change_policy_text": "Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.",
    "duration": "PT1H30M",
    "internal_name": "IC - New Patient",
    "metadata": {
    "external_id": "123"
    },
    "name": "Initial Consult",
    "provider_notifications": {
    "additional_recipients": [
    "admin@example.com"
    ],
    "notify_provider": true,
    "types": [
    {
    "type": "new_appointment"
    }
    ]
    },
    "rescheduling_policy": {
    "advance_notice": {
    "enabled": true,
    "minimum_duration": "PT1H"
    },
    "allow_rescheduling": true,
    "disabled_message": "Rescheduling is disabled for this service."
    },
    "slot_rules": [
    {
    "recurrence_rule": {
    "byday": [
    "mo",
    "we",
    "fr"
    ],
    "freq": "weekly"
    },
    "start_times": [
    "09:00",
    "10:00"
    ]
    }
    ]
    }