A Service defines the name, duration, and settings to be used when booking the Customer's appointment. You may also add a description and an image to the Service for more comprehensive displays. We also offer a variety of customizable settings such as maximum bookings per slot and maximum daily bookings depending on your service needs and availability.

Creating a service

Services can be created within the Setup API, with required fields of Name, Description and Duration. Description must be at least 2 characters, duration is set in minutes, as an integer. The optional parameters are described in the topics below.

curl -X POST 
  --header 'Content-Type: application/json-patch+json' 
  --header 'Accept: application/json' 
  --header 'Authorization: Bearer {AUTH_TOKEN}' 
  -d '{
    "name":"My service",
    "description":"A description about my service",
POST /setup/v1/services HTTP/1.1
Host: sandbox-api.onsched.com
Content-Type: application/json
Authorization: Bearer {AUTH_TOKEN}
Accept: */*
Cache-Control: no-cache
Host: sandbox-api.onsched.com
Accept-Encoding: gzip, deflate
Content-Length: 102
Cookie: ARRAffinity={RANDOM_STRING}
Connection: keep-alive
cache-control: no-cache

    "name":"My service",
    "description":"A description about my service",
var request = require("request");

var options = { method: 'POST',
  url: 'https://sandbox-api.onsched.com/setup/v1/services',
   { 'cache-control': 'no-cache',
     Connection: 'keep-alive',
     Cookie: 'ARRAffinity={RANDOM_STRING}}',
     'Content-Length': '102',
     'Accept-Encoding': 'gzip, deflate',
     Host: 'sandbox-api.onsched.com',
     'Cache-Control': 'no-cache',
     Accept: '*/*',
     Authorization: 'Bearer {AUTH_TOKEN}',
     'Content-Type': 'application/json' },
      "name":"My service",
      "description":"A description about my service",
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://sandbox-api.onsched.com/setup/v1/services",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "*/*",
    "Cache-Control": "no-cache",
    "Host": "sandbox-api.onsched.com",
    "Accept-Encoding": "gzip, deflate",
    "Content-Length": "102",
    "Cookie": "ARRAffinity={RANDOM_STRING}",
    "Connection": "keep-alive",
    "cache-control": "no-cache"
  "processData": false,
  "data": "{\n\t\"name\" : \"My service\",\n\t\"name\" : \"A description about my service\",\n\t\"duration\" : \"30\",\n\t\"bookingInterval\" : \"0\"n}"

$.ajax(settings).done(function (response) {

Booking Interval

By default times returned from the GET /availability endpoint will have an interval of 30 minutes. If the booking interval is left unset, and your availability was open from 9am-11am, the times returned would be: 9am, 9:30am, 10am, 10:30am.

The booking interval can be adjusted when you create your service to return times every 15 minutes or hour for instance, by setting the optional parameter when creating the service.

Variable Duration

Should you require the duration of your Service to be adjustable, you can vary the duration in custom intervals by enabling Variable Duration.

If you are using OnSched JS enabling Variable Duration will result in a dropdown selection beside the Service name in the Services Element where a booker may select between different duration options.

By selecting this option you must choose a minimum duration, maximum duration, and interval that you will allow the customer to book.

  • Minimum will set the shortest duration available to select
  • Maximum will set the longest duration available to select
  • Interval will set the interval between these options


Use Case: 30 min, 60 min, 90 min Appointments

In the case where you would like your customers to choose between 30 min, 60 min, and 90 for the duration of their appointment, your Service settings should look as follows: Minimum: 30 min, Maximum: 90 min, Interval: 30 min

If using via the API, you may pass in a value to the duration property when calling the /Availability endpoint. The value passed to the duration property must match the Min, Max, and Interval properties set on the Service profile.

The following is an example of the properties passed in an options object to the body of the /Availability endpoint request:

"options": {
    "durationSelect": true,
    "durationInterval": 30,
    "durationMin": 30,
    "durationMax": 90,

The variable duration can be changed in Portal and in Dashboard. To change it in Portal go to My Services > Manage Services, select the service and click on edit.

In the Service Settings section click on the Consumer duration selection checkbox. The options to set the variable duration will show up as the following picture.


For Dashboard, simply go to the service you want to change and click on the variable duration checkbox


Default Services

A Default Service is one that is created at the Company Level and is available to all Business Locations within that Company. Upon enabling a Default Service, all newly created Business Locations will see it on their list of Services.

A Business Location may add another Service and enable it as the default themselves should they choose to customize it. Alternatively, they may disable and hide the Default Service then add multiple Services to allow for Service selection in the online booking flow.


1 Default Service Limit

Only 1 Default Service may be used as it skips the Service selection page when enabled. Should a Business enable more than 1 Service as a Default then OnSched will automatically select the first Default Service on the list.

Appointment Padding

Appointment Padding can be used to add prep time before, or after, each appointment without extending the duration longer than the appointment will last. For instance, should you require 30 minutes in between each appointment, and each appointment is 30 minutes in duration, you may add 30 minutes of appointment padding which will book in 1-hour blocks.

Business ScheduleConsumer Schedule
Business Schedule Padding will add time after each appointment.Consumer Schedule Padding will add time prior to each appointment.

Appointment Padding can be added to the Business or Consumer schedule, as shown in the figure above.

What’s Next