Skip to main content

Setster Scheduling API (2.0)

The Setster API is used to control your account’s data programmatically. The API is organized around REST and standard HTTP verbs. A consistent envelope is used for all responses alongside response codes to indicate the status of the message and any error codes. JSON is returned on all our API responses with a consistent structure for all messages.

Account

This object is the Setster account created within the Setster service. You will need a Setster account to test or perform actions with API, and you can signup here. An account can be a parent account or a child account (sub-account). The account will hold general company information and various account-level settings that play an integral part in the booking logic.

Authenticate

The first step to using the Setster API is to authenticate. Authentication is done using your secret API Key and the account-owner email. In the returned response, the session_token should be used for all consecutive API calls. Please note the session, and the session_token expires periodically, and re-authentication will be required. We recommended you follow standard practices and develop an authentication methodology within your application to keep the connection open.

Session Token Refresh

When the session token expires, a 403 Forbidden response will be received, indicating the need for re-authentication and retrieval of a new token to maintain the connection. Instead of reauthenticating at regular intervals, it is advisable to perform this action as needed.

query Parameters
email
required
string <email>

Account owner email address

token
required
string

API key

company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request POST 'https://www.setster.com/api/v2/account/authenticate?session_token=SESSION_TOKEN&email=EMAIL&token=TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "user": {
      },
    • "session_token": "bl0l9e0g9t1lvul5fg635jre32"
    }
}

Get Account Summary

Retrieve a specific account's summary.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "company_name": "Apple",
    • "nick_name": "apple",
    • "website": "www.example.com",
    • "contact": "user@example.com",
    • "facebook": "www.facebook.com/company",
    • "linkedin": "www.linkedin.com/company",
    • "twitter": "www.twitter.com/company",
    • "skype_name": "nickname",
    • "yelp": "www.yelp.com/company",
    • "pinterest": "www.pinterest.com/company",
    • "vimeo": "www.vimeo.com/company",
    • "youtube": "www.youtube.com/company",
    • "phone": "",
    • "timezone_id": 553,
    • "fax": "(310) 123-4568",
    • "industry": "string",
    • "logo": "string",
    • "paragraph": "We are a....",
    • "email": "user@example.com",
    • "password": "i39j02ksnfj40f",
    • "first_name": "",
    • "last_name": "",
    • "id": 0,
    • "company_id": 2345,
    • "created_by": 1242,
    • "address_city": "Los Angeles",
    • "address_country": "USA",
    • "address_state": "California",
    • "address_street1": "123 Street",
    • "address_street2": "Unit B",
    • "addresszip": "90210",
    • "send_to_contact": 0,
    • "show_map_profile": false,
    • "splash": "string",
    • "return_url": "https://www.google.com/",
    • "policies": "We accept bookings for specific services only and you're...",
    • "account_type": "0",
    • "date_created": "2019-08-24T14:15:22Z",
    • "no_views": "string",
    • "notify_app_unconfirmed": true,
    • "notify_app_unpaid": true,
    • "lang": "en",
    • "enable_locations": true,
    • "capture_leads": "string",
    • "settings": "string",
    • "status": 0,
    • "directory": 0,
    • "max_providers": 0,
    • "business_hours_label": "string",
    • "policies_label": "string",
    • "paragraph_label": "string",
    • "timezone": -480,
    • "exchange_sync_settings": {
      }
    }
}

Create a Sub-Account

Create a child account under an existing parent account.

Requires sub-account privileges. To activate sub-account privileges, please contact the Setster support team.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_name
required
string
Example: "Apple"

The name of the company

nick_name
required
string
Example: "apple"

The unique nickname of the account. Also create's the account's profile page https://nickname.setster.com. May contain only letters and digits

email
required
string <email>

Contact of the main and default employee. Together with the password is used as user name

password
required
string <password>
Example: "i39j02ksnfj40f"

Used along with the account email

website
string <uri>
Example: "www.example.com"

The company's website URL.

contact
string <email>

The company's main email address.

facebook
string <uri>
Example: "www.facebook.com/company"

The Facebook company page URL.

linkedin
string <uri>
Example: "www.linkedin.com/company"

The Linkedin company page URL.

twitter
string <uri>
Example: "www.twitter.com/company"

The Twitter account URL of the company.

skype_name
string
Example: "nickname"

The Skype nickname of the company Skype account.

yelp
string
Example: "www.yelp.com/company"

The company's Yelp page URL

pinterest
string
Example: "www.pinterest.com/company"

The company's Pinterest page URL

vimeo
string
Example: "www.vimeo.com/company"

The company's Vimeo page URL

youtube
string
Example: "www.youtube.com/company"

The company's YouTube channel URL

phone
string
Example: "(310) 123-4567"

The main business phone number

timezone_id
integer
Default: 553

The account's set timezone ID

fax
string
Example: "(310) 123-4568"

The main business fax number

industry
string
logo
string
paragraph
string
Example: "We are a...."

The company's about us section. Optional content visitble to users during booking an appointment

business_hours
string
Example: "Monday - Friday 9am - 5pm"

The company's main business hours.

first_name
string
Example: ""

Personal info for the main/default employee

last_name
string
Example: ""

Personal info for the main/default employee

address_city
string
Example: "Los Angeles"

The city in the account address

address_country
string
Example: "USA"

The country of the account address.

address_state
string
Example: "California"

The state of the account address

address_street1
string
Example: "123 Street"

The street address of the account address

address_street2
string
Example: "Unit B"

The street address line 2 of the account address

addresszip
string
Example: "90210"

The zip code of the account address.

send_to_contact
integer
Default: 0
show_map_profile
boolean
Default: false

Shows or hides the company map view on the profile page

splash
string
map_url
string <uri>
Example: "https://goo.gl/maps/qpuAvyPizfgP5FbN7"

The Google map URL for the account address.

return_url
string
Example: "https://www.google.com/"

The URL a user will be directed to after booking an appointment

policies
string
Example: "We accept bookings for specific services only and you're..."

The company's booking policy. Optional content visitble to users during booking an appointment

account_type
integer <int32>
Enum: 0 1 2 4 5 6
Example: "0"

The subscription plan of the account.

notify_app_unconfirmed
boolean
Default: true

Notify the staff/employees of new unconfirmed appointments

notify_app_unpaid
boolean
Default: true

Notify the staff/employees of new unpaid appointments

lang
string
Default: "en"
Enum: "en" "fr" "es"

The language of the account

enable_locations
boolean
Default: true

An account has multiple location creation previlidges

capture_leads
string
directory
integer
Default: 0
max_providers
integer <int32>
Default: 0

The number of licenses the account is susubscribed/paying for.

business_hours_label
string

The label for the company's main business hours.

policies_label
string

The label for the company's booking policy.

paragraph_label
string

The label for the company's account section.

timezone
integer <int32>
Default: 0
Example: "-480"

The GMT offset in minutes of the account's timezone

Responses

Request samples

Content type
application/json
{
  • "company_name": "Apple",
  • "nick_name": "apple",
  • "website": "www.example.com",
  • "contact": "user@example.com",
  • "facebook": "www.facebook.com/company",
  • "linkedin": "www.linkedin.com/company",
  • "twitter": "www.twitter.com/company",
  • "skype_name": "nickname",
  • "yelp": "www.yelp.com/company",
  • "pinterest": "www.pinterest.com/company",
  • "vimeo": "www.vimeo.com/company",
  • "youtube": "www.youtube.com/company",
  • "phone": "(310) 123-4567",
  • "timezone_id": 553,
  • "fax": "(310) 123-4568",
  • "industry": "string",
  • "logo": "string",
  • "paragraph": "We are a....",
  • "business_hours": "Monday - Friday 9am - 5pm",
  • "email": "user@example.com",
  • "password": "i39j02ksnfj40f",
  • "first_name": "",
  • "last_name": "",
  • "address_city": "Los Angeles",
  • "address_country": "USA",
  • "address_state": "California",
  • "address_street1": "123 Street",
  • "address_street2": "Unit B",
  • "addresszip": "90210",
  • "send_to_contact": 0,
  • "show_map_profile": false,
  • "splash": "string",
  • "return_url": "https://www.google.com/",
  • "policies": "We accept bookings for specific services only and you're...",
  • "account_type": "0",
  • "notify_app_unconfirmed": true,
  • "notify_app_unpaid": true,
  • "lang": "en",
  • "enable_locations": true,
  • "capture_leads": "string",
  • "directory": 0,
  • "max_providers": 0,
  • "business_hours_label": "string",
  • "policies_label": "string",
  • "paragraph_label": "string",
  • "timezone": -480
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "company_name": "Apple",
    • "nick_name": "apple",
    • "website": "www.example.com",
    • "contact": "user@example.com",
    • "facebook": "www.facebook.com/company",
    • "linkedin": "www.linkedin.com/company",
    • "twitter": "www.twitter.com/company",
    • "skype_name": "nickname",
    • "yelp": "www.yelp.com/company",
    • "pinterest": "www.pinterest.com/company",
    • "vimeo": "www.vimeo.com/company",
    • "youtube": "www.youtube.com/company",
    • "phone": "",
    • "timezone_id": 553,
    • "fax": "(310) 123-4568",
    • "industry": "string",
    • "logo": "string",
    • "paragraph": "We are a....",
    • "email": "user@example.com",
    • "password": "i39j02ksnfj40f",
    • "first_name": "",
    • "last_name": "",
    • "id": 0,
    • "company_id": 2345,
    • "created_by": 1242,
    • "address_city": "Los Angeles",
    • "address_country": "USA",
    • "address_state": "California",
    • "address_street1": "123 Street",
    • "address_street2": "Unit B",
    • "addresszip": "90210",
    • "send_to_contact": 0,
    • "show_map_profile": false,
    • "splash": "string",
    • "return_url": "https://www.google.com/",
    • "policies": "We accept bookings for specific services only and you're...",
    • "account_type": "0",
    • "date_created": "2019-08-24T14:15:22Z",
    • "no_views": "string",
    • "notify_app_unconfirmed": true,
    • "notify_app_unpaid": true,
    • "lang": "en",
    • "enable_locations": true,
    • "capture_leads": "string",
    • "settings": "string",
    • "status": 0,
    • "directory": 0,
    • "max_providers": 0,
    • "business_hours_label": "string",
    • "policies_label": "string",
    • "paragraph_label": "string",
    • "timezone": -480,
    • "exchange_sync_settings": {
      }
    }
}

List Sub-Accounts

Get a list of all sub-accounts and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/companies?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify Business Info

Modify the attributes of the business profile.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_name
required
string
Example: "Apple"

The name of the company

nick_name
required
string
Example: "apple"

The unique nickname of the account. Also create's the account's profile page https://nickname.setster.com. May contain only letters and digits

website
string <uri>
Example: "www.example.com"

The company's website URL.

contact
string <email>

The company's main email address.

facebook
string <uri>
Example: "www.facebook.com/company"

The Facebook company page URL.

linkedin
string <uri>
Example: "www.linkedin.com/company"

The Linkedin company page URL.

twitter
string <uri>
Example: "www.twitter.com/company"

The Twitter account URL of the company.

skype_name
string
Example: "nickname"

The Skype nickname of the company Skype account.

yelp
string
Example: "www.yelp.com/company"

The company's Yelp page URL

pinterest
string
Example: "www.pinterest.com/company"

The company's Pinterest page URL

vimeo
string
Example: "www.vimeo.com/company"

The company's Vimeo page URL

youtube
string
Example: "www.youtube.com/company"

The company's YouTube channel URL

phone
string
Example: "(310) 123-4567"

The main business phone number

timezone_id
integer
Default: 553

The account's set timezone ID

fax
string
Example: "(310) 123-4568"

The main business fax number

industry
string
logo
string
paragraph
string
Example: "We are a...."

The company's about us section. Optional content visitble to users during booking an appointment

business_hours
string
Example: "Monday - Friday 9am - 5pm"

The company's main business hours.

Responses

Request samples

Content type
application/json
{
  • "company_name": "Apple",
  • "nick_name": "apple",
  • "website": "www.example.com",
  • "contact": "user@example.com",
  • "facebook": "www.facebook.com/company",
  • "linkedin": "www.linkedin.com/company",
  • "twitter": "www.twitter.com/company",
  • "skype_name": "nickname",
  • "yelp": "www.yelp.com/company",
  • "pinterest": "www.pinterest.com/company",
  • "vimeo": "www.vimeo.com/company",
  • "youtube": "www.youtube.com/company",
  • "phone": "(310) 123-4567",
  • "timezone_id": 553,
  • "fax": "(310) 123-4568",
  • "industry": "string",
  • "logo": "string",
  • "paragraph": "We are a....",
  • "business_hours": "Monday - Friday 9am - 5pm"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "company_name": "Apple",
    • "nick_name": "apple",
    • "website": "www.example.com",
    • "contact": "user@example.com",
    • "facebook": "www.facebook.com/company",
    • "linkedin": "www.linkedin.com/company",
    • "twitter": "www.twitter.com/company",
    • "skype_name": "nickname",
    • "yelp": "www.yelp.com/company",
    • "pinterest": "www.pinterest.com/company",
    • "vimeo": "www.vimeo.com/company",
    • "youtube": "www.youtube.com/company",
    • "phone": "",
    • "timezone_id": 553,
    • "fax": "(310) 123-4568",
    • "industry": "string",
    • "logo": "string",
    • "paragraph": "We are a....",
    • "email": "user@example.com",
    • "password": "i39j02ksnfj40f",
    • "first_name": "",
    • "last_name": "",
    • "id": 0,
    • "company_id": 2345,
    • "created_by": 1242,
    • "address_city": "Los Angeles",
    • "address_country": "USA",
    • "address_state": "California",
    • "address_street1": "123 Street",
    • "address_street2": "Unit B",
    • "addresszip": "90210",
    • "send_to_contact": 0,
    • "show_map_profile": false,
    • "splash": "string",
    • "return_url": "https://www.google.com/",
    • "policies": "We accept bookings for specific services only and you're...",
    • "account_type": "0",
    • "date_created": "2019-08-24T14:15:22Z",
    • "no_views": "string",
    • "notify_app_unconfirmed": true,
    • "notify_app_unpaid": true,
    • "lang": "en",
    • "enable_locations": true,
    • "capture_leads": "string",
    • "settings": "string",
    • "status": 0,
    • "directory": 0,
    • "max_providers": 0,
    • "business_hours_label": "string",
    • "policies_label": "string",
    • "paragraph_label": "string",
    • "timezone": -480,
    • "exchange_sync_settings": {
      }
    }
}

Get Full Account Data

Retrieve a specific account's complete data.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/getAccountInfo?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "company_name": "Apple",
    • "nick_name": "apple",
    • "website": "www.example.com",
    • "contact": "user@example.com",
    • "facebook": "www.facebook.com/company",
    • "linkedin": "www.linkedin.com/company",
    • "twitter": "www.twitter.com/company",
    • "skype_name": "nickname",
    • "yelp": "www.yelp.com/company",
    • "pinterest": "www.pinterest.com/company",
    • "vimeo": "www.vimeo.com/company",
    • "youtube": "www.youtube.com/company",
    • "phone": "",
    • "timezone_id": 553,
    • "fax": "(310) 123-4568",
    • "industry": "string",
    • "logo": "string",
    • "paragraph": "We are a....",
    • "email": "user@example.com",
    • "password": "i39j02ksnfj40f",
    • "first_name": "",
    • "last_name": "",
    • "id": 0,
    • "company_id": 2345,
    • "created_by": 1242,
    • "address_city": "Los Angeles",
    • "address_country": "USA",
    • "address_state": "California",
    • "address_street1": "123 Street",
    • "address_street2": "Unit B",
    • "addresszip": "90210",
    • "send_to_contact": 0,
    • "show_map_profile": false,
    • "splash": "string",
    • "return_url": "https://www.google.com/",
    • "policies": "We accept bookings for specific services only and you're...",
    • "account_type": "0",
    • "date_created": "2019-08-24T14:15:22Z",
    • "no_views": "string",
    • "notify_app_unconfirmed": true,
    • "notify_app_unpaid": true,
    • "lang": "en",
    • "enable_locations": true,
    • "capture_leads": "string",
    • "settings": "string",
    • "status": 0,
    • "directory": 0,
    • "max_providers": 0,
    • "business_hours_label": "string",
    • "policies_label": "string",
    • "paragraph_label": "string",
    • "timezone": -480,
    • "exchange_sync_settings": {
      },
    • "holidays": [
      ],
    • "business_hours": "string",
    • "company_business_hours": "string"
    }
}

Modify Booking Options

Modify the set booking options.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
integer
Example: "654"
object
currency
string
Example: "USD"
hide_contact
boolean
Default: 0
hide_about
boolean
Default: 0
show_email
boolean
Default: 0
show_provider_image
boolean
Default: 0
providers_tab_option
string
Example: "2"
select_single_service
boolean
Default: 1
default_calendar_view
string
Default: "d"
Enum: "d" "w"
month_view_availability
integer
Example: "1"
email_confirmation
integer
Example: "1"
book_another_appointment
boolean
Default: 0
display_google_map_on_locations
boolean
Default: 0
hide_timezone_alert
boolean
Example: "0"
select_single_location
boolean
Default: 1
show_in_host_or_client_time
boolean
Default: 0
email_timezone_alert
boolean
Default: 0
widget_customBookingFields
string
Example: "a:4:{s:13:\"provider_date\";i:1;s:13:\"provider_time\";i:1;s:8:\"location\";i:1;s:7:\"service\";i:1;}"
enable_mobile_widget
boolean
Default: 1
any_available_provider
string
Example: "1"
show_staff_photo
boolean
Example: "1"
auto_confirm
boolean
Example: "0"
prior_notice
integer
Example: "0"
prior_cancel_appointment
integer
Example: "0"
prior_reschedule_appointment
integer
Example: "0"
duration_padding
integer
Example: "30"
start_step
integer
Example: "0"
after_notice
integer
Example: "0"
allow_cash_payment
boolean
Example: "0"
waiting_list
boolean
Example: "0"
layout_params
string
Example: "a:5:{s:14:\"overlay_option\";s:7:\"overlay\";s:8:\"position\";s:5:\"right\";s:11:\"button_name\";s:11:\"Appointment\";s:12:\"button_color\";s:6:\"ff0000\";s:13:\"locations_map\";i:0;}"
style_params
string
Default: ""
new_style
integer
Example: "1"
new_mobile_style
integer
Example: "1"
widget_send_client_emails
boolean
Example: "1"
widget_send_provider_emails
boolean
Example: "1"
send_reminder
boolean
Example: "24"
notify_app_unconfirmed
boolean
Example: "1"
send_to_contact
boolean
Example: "0"
notify_app_unpaid
boolean
Example: "1"
lang
string
Default: "en"
timezone_id
integer
Example: "553"
currenciesStripe
Array of strings
Example: "AED,AFN,ALL"
currenciesPaypal
Array of strings
Example: "AED,AFN,ALL"
stripe_client_id
string
Example: "ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"

Responses

Request samples

Content type
application/json
{
  • "company_id": 654,
  • "email_settings": {
    • "widget_send_client_emails": 0,
    • "widget_send_provider_emails": 0,
    • "send_reminder": 0
    },
  • "currency": "USD",
  • "hide_contact": 0,
  • "hide_about": 0,
  • "show_email": 0,
  • "show_provider_image": 0,
  • "providers_tab_option": "2",
  • "select_single_service": 1,
  • "default_calendar_view": "d",
  • "month_view_availability": 1,
  • "email_confirmation": 1,
  • "book_another_appointment": 0,
  • "display_google_map_on_locations": 0,
  • "hide_timezone_alert": 0,
  • "select_single_location": 1,
  • "show_in_host_or_client_time": 0,
  • "email_timezone_alert": 0,
  • "widget_customBookingFields": "a:4:{s:13:\"provider_date\";i:1;s:13:\"provider_time\";i:1;s:8:\"location\";i:1;s:7:\"service\";i:1;}",
  • "enable_mobile_widget": 1,
  • "any_available_provider": "1",
  • "show_staff_photo": 1,
  • "auto_confirm": 0,
  • "prior_notice": 0,
  • "prior_cancel_appointment": 0,
  • "prior_reschedule_appointment": 0,
  • "duration_padding": 30,
  • "start_step": 0,
  • "after_notice": 0,
  • "allow_cash_payment": 0,
  • "waiting_list": 0,
  • "layout_params": "a:5:{s:14:\"overlay_option\";s:7:\"overlay\";s:8:\"position\";s:5:\"right\";s:11:\"button_name\";s:11:\"Appointment\";s:12:\"button_color\";s:6:\"ff0000\";s:13:\"locations_map\";i:0;}",
  • "style_params": "",
  • "new_style": 1,
  • "new_mobile_style": 1,
  • "widget_send_client_emails": 1,
  • "widget_send_provider_emails": 1,
  • "send_reminder": 24,
  • "notify_app_unconfirmed": 1,
  • "send_to_contact": 0,
  • "notify_app_unpaid": 1,
  • "lang": "en",
  • "timezone_id": 553,
  • "currenciesStripe": [
    • "AED",
    • "AFN",
    • "ALL"
    ],
  • "currenciesPaypal": [
    • "AED",
    • "AFN",
    • "ALL"
    ],
  • "stripe_client_id": "ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "company_id": 654,
    • "currency": "USD",
    • "hide_contact": 0,
    • "hide_about": 0,
    • "show_email": 0,
    • "show_provider_image": 0,
    • "providers_tab_option": "2",
    • "select_single_service": 1,
    • "default_calendar_view": "d",
    • "month_view_availability": 1,
    • "email_confirmation": 1,
    • "book_another_appointment": 0,
    • "display_google_map_on_locations": 0,
    • "hide_timezone_alert": 0,
    • "select_single_location": 1,
    • "show_in_host_or_client_time": 0,
    • "email_timezone_alert": 0,
    • "widget_customBookingFields": "a:4:{s:13:\"provider_date\";i:1;s:13:\"provider_time\";i:1;s:8:\"location\";i:1;s:7:\"service\";i:1;}",
    • "enable_mobile_widget": 1,
    • "any_available_provider": "1",
    • "show_staff_photo": 1,
    • "auto_confirm": 0,
    • "prior_notice": 0,
    • "prior_cancel_appointment": 0,
    • "prior_reschedule_appointment": 0,
    • "duration_padding": 30,
    • "start_step": 0,
    • "after_notice": 0,
    • "allow_cash_payment": 0,
    • "waiting_list": 0,
    • "layout_params": "a:5:{s:14:\"overlay_option\";s:7:\"overlay\";s:8:\"position\";s:5:\"right\";s:11:\"button_name\";s:11:\"Appointment\";s:12:\"button_color\";s:6:\"ff0000\";s:13:\"locations_map\";i:0;}",
    • "style_params": "",
    • "new_style": 1,
    • "new_mobile_style": 1,
    • "widget_send_client_emails": 1,
    • "widget_send_provider_emails": 1,
    • "send_reminder": 24,
    • "notify_app_unconfirmed": 1,
    • "send_to_contact": 0,
    • "notify_app_unpaid": 1,
    • "lang": "en",
    • "timezone_id": 553,
    • "currenciesStripe": [
      ],
    • "currenciesPaypal": [
      ],
    • "stripe_client_id": "ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"
    }
}

Get Booking Options

Get the currently set booking options.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/getOptions?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "company_id": 654,
    • "currency": "USD",
    • "hide_contact": 0,
    • "hide_about": 0,
    • "show_email": 0,
    • "show_provider_image": 0,
    • "providers_tab_option": "2",
    • "select_single_service": 1,
    • "default_calendar_view": "d",
    • "month_view_availability": 1,
    • "email_confirmation": 1,
    • "book_another_appointment": 0,
    • "display_google_map_on_locations": 0,
    • "hide_timezone_alert": 0,
    • "select_single_location": 1,
    • "show_in_host_or_client_time": 0,
    • "email_timezone_alert": 0,
    • "widget_customBookingFields": "a:4:{s:13:\"provider_date\";i:1;s:13:\"provider_time\";i:1;s:8:\"location\";i:1;s:7:\"service\";i:1;}",
    • "enable_mobile_widget": 1,
    • "any_available_provider": "1",
    • "show_staff_photo": 1,
    • "auto_confirm": 0,
    • "prior_notice": 0,
    • "prior_cancel_appointment": 0,
    • "prior_reschedule_appointment": 0,
    • "duration_padding": 30,
    • "start_step": 0,
    • "after_notice": 0,
    • "allow_cash_payment": 0,
    • "waiting_list": 0,
    • "layout_params": "a:5:{s:14:\"overlay_option\";s:7:\"overlay\";s:8:\"position\";s:5:\"right\";s:11:\"button_name\";s:11:\"Appointment\";s:12:\"button_color\";s:6:\"ff0000\";s:13:\"locations_map\";i:0;}",
    • "style_params": "",
    • "new_style": 1,
    • "new_mobile_style": 1,
    • "widget_send_client_emails": 1,
    • "widget_send_provider_emails": 1,
    • "send_reminder": 24,
    • "notify_app_unconfirmed": 1,
    • "send_to_contact": 0,
    • "notify_app_unpaid": 1,
    • "lang": "en",
    • "timezone_id": 553,
    • "currenciesStripe": [
      ],
    • "currenciesPaypal": [
      ],
    • "stripe_client_id": "ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"
    }
}

Modify Personal Info

Modify the attributes of the account owner.

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
email
string <email>

Contact of the main and default employee. Together with the password is used as user name

password
string <password>
Example: "i39j02ksnfj40f"

Used along with the account email

first_name
string
Example: ""

Personal info for the main/default employee

last_name
string
Example: ""

Personal info for the main/default employee

phone
string
Example: ""

Business phone

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "i39j02ksnfj40f",
  • "first_name": "",
  • "last_name": "",
  • "phone": ""
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "company_name": "Apple",
    • "nick_name": "apple",
    • "website": "www.example.com",
    • "contact": "user@example.com",
    • "facebook": "www.facebook.com/company",
    • "linkedin": "www.linkedin.com/company",
    • "twitter": "www.twitter.com/company",
    • "skype_name": "nickname",
    • "yelp": "www.yelp.com/company",
    • "pinterest": "www.pinterest.com/company",
    • "vimeo": "www.vimeo.com/company",
    • "youtube": "www.youtube.com/company",
    • "phone": "",
    • "timezone_id": 553,
    • "fax": "(310) 123-4568",
    • "industry": "string",
    • "logo": "string",
    • "paragraph": "We are a....",
    • "email": "user@example.com",
    • "password": "i39j02ksnfj40f",
    • "first_name": "",
    • "last_name": "",
    • "id": 0,
    • "company_id": 2345,
    • "created_by": 1242,
    • "address_city": "Los Angeles",
    • "address_country": "USA",
    • "address_state": "California",
    • "address_street1": "123 Street",
    • "address_street2": "Unit B",
    • "addresszip": "90210",
    • "send_to_contact": 0,
    • "show_map_profile": false,
    • "splash": "string",
    • "return_url": "https://www.google.com/",
    • "policies": "We accept bookings for specific services only and you're...",
    • "account_type": "0",
    • "date_created": "2019-08-24T14:15:22Z",
    • "no_views": "string",
    • "notify_app_unconfirmed": true,
    • "notify_app_unpaid": true,
    • "lang": "en",
    • "enable_locations": true,
    • "capture_leads": "string",
    • "settings": "string",
    • "status": 0,
    • "directory": 0,
    • "max_providers": 0,
    • "business_hours_label": "string",
    • "policies_label": "string",
    • "paragraph_label": "string",
    • "timezone": -480,
    • "exchange_sync_settings": {
      }
    }
}

Get Account Owner Info

Get the personal information of the account owner and the used licenses of the account.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/getPersonalInfo?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Get Stripe Data

Get Stripe connection data.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/getStripe?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "stripePublishableKey": "string"
    }
}

Get PayPal Email

Get the PayPal email address of the account.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/getPaypal?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "paypal_email": "user@example.com"
    }
}

Get Widget Code

Get a copy of the Setster plug-and-play widget code. Find more info on the Setster widget here.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

overlay_option
string
Default: "overlay"
position
string
Default: "right"
button_name
string
Default: "Appointment"
button_color
string
Default: "ff0000"
defaultService
string
defaultProvider
string
defaultLocation
string
returnUrl
string <url>
locations_map
integer
Default: 0
no_code
integer
Default: 0
send_to
string <email>

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/getWidgetCode?session_token=SESSION_TOKEN&overlay_option=OVERLAY_OPTION&position=POSITION&button_name=BUTTON_NAME&button_color=BUTTON_COLOR&defaultService=DEFAULTSERVICE&defaultProvider=DEFAULTPROVIDER&defaultLocation=DEFAULTLOCATION&returnUrl=RETURNURL&locations_map=LOCATIONS_MAP&no_code=NO_CODE&send_to=SEND_TO'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "html": "<!-- Begin Setster Widget -->\\n<script type=\\\"text/javascript\\\"\ncharset=\\\"utf-8\\\">\\n var is_ssl = (\\\"https:\\\" == document.location.protocol);\\n\n var setsHost = is_ssl ? \\\"https://www.setster.com/widget/\\\" :\n \\\"https://www.setster.com/widget/\\\";\\n document.write(unescape(\\\"%3Cscript\n src='\\\" + setsHost + \\\"js/setster_over.js?v=2'\n type='text/javascript'%3E%3C/script%3E\\\"));\\n</script>\\n\\n\n <script type=\\\"text/javascript\\\" charset=\\\"utf-8\\\">\\n\n var setster_widget_options = {};\\n\\n setster_widget_options.display =\n \\\"overlay\\\"; \\n setster_widget_options.uri = \\\"boxadoro\\\";\\n\n setster_widget_options.placement = \\\"right\\\"; \\n\n setster_widget_options.buttonName = \\\"Appointment\\\"; \\n\n setster_widget_options.setsterURL = setsHost; \\n var setster_widget =\n new Setster.setster_widget(setster_widget_options);\\n</script>\\n\n <!-- End Setster Widget -->\\n\"\n"
    }
}

Request password reset

Initiates the password reset process. In order to reset the password a pre request must be made.

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

email
required
string <email>
Example: email=email@company.com
confirmation_url
required
string <uri>
Example: confirmation_url=www.test_confirmation_url.com

The base url used to generate the confirmation link in the email message that is sent to the client. Confirmation link = confirmation_url + '?email={userEmail}&hash_code={hashCode}'

Responses

Request samples

curl --location --request POST 'https://www.setster.com/api/v2/account/request_password_reset?session_token=SESSION_TOKEN&email=EMAIL&confirmation_url=CONFIRMATION_URL'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "Confirmation email sent",
  • "data": { }
}

Logout

Perform an account log out and terminate the current active session.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/account/logout?session_token=SESSION_TOKEN'

Reset Password

Modifies the account owner's password using the valid hash_code that was used when initiating the password reset process. The Request Password Reset call should be performed beforehand.

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

email
required
string <email>
Example: email=email@company.com
hash_code
required
string
Example: hash_code=test_hash_code
new_password
required
string <password>
Example: new_password=test_new_password

Responses

Request samples

curl --location --request POST 'https://www.setster.com/api/v2/account/reset_password?session_token=SESSION_TOKEN&email=EMAIL&hash_code=HASH_CODE&new_password=NEW_PASSWORD'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "Password changed",
  • "data": { }
}

Check Nickname Availability

Check whether a nickname (nick_name) is already in use. Nicknames within the Setster service must be unique and create the URL under the Setster domain. Example demo.setster.com.

path Parameters
nickname
required
string
Example: johndoe
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/account/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "nick_name already exists",
  • "data": { }
}

Check Email Availability

Check whether an email is already in use. Emails within the Setster service are required to be unique.

path Parameters
email
required
string <email>
Example: test@example.com
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/account/checkemail/{email}?session_token=SESSION_TOKEN&email=EMAIL'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "nick_name already exists",
  • "data": { }
}

Appointment

An appointment (also known as a meeting or scheduled event) is the desired outcome of the booking. Each appointment is assigned an ID and is linked to a client. Clients are created or updated with each appointment saved.

List Appointments

Get a list of all appointments (upcoming and past) and their attributes. We advise using filters to fetch appointments for specific date ranges or different attributes. By default, getting the appointments list will include a 48 hour offset to allow for timezone conversions.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

id
integer

The appointment id

employee_id
integer
location_id
integer
service_id
integer
client_id
integer
timezone_id
integer
Example: timezone_id=553

Returns appointments date fields with specified time offset

ews_id
string
Deprecated
status
string
only_exact_dates
string
Example: only_exact_dates=true

When only_exact_dates is set to 'true' and is paired with timezone_id, start_date, and end_date the appointments listed will only be appointments that are within the date range for the given timezone. When only_exact_dates is set to 'false' or excluded entirely, appointments will be listed including a 48 hour offset to allow for timezone conversions.

search_text
string
client_name
string
client_email
string
custom_field_1
string
Deprecated
custom_field_2
string
Deprecated
custom_field_3
string
Deprecated
custom_field_4
string
Deprecated
custom_field_5
string
Deprecated
cf_ids
string
Example: cf_ids=custom_field_1,custom_field_2

Comma separated list of custom field ids

cf_search
string
Example: cf_search=Some text to search

Text that should be searched in the custom fields

cf_search_precision
string
Default: "exact"
Enum: "exact" "fuzzy"

The type of precision to use when searching in custom fields.

cf_search_operand
string
Default: "and"
Enum: "and" "or"

The type of operand to use when multiple custom fields ids are used. When using 'and' all custom fields must match, when using 'or' at least one custom field must match.

start_date
string
end_date
string
paid
integer
Enum: 0 1
start
integer
Default: 0

List pager

integer or string
Default: 100

List pager / 'all' - no limit

updated_after
string <date-time>

Lower date limit for which the appointment was updated

updated_before
string <date-time>

Upper date limit for which the appointment was updated

created_after
string <date-time>

Lower date limit for which the appointment was created

created_before
string <date-time>

Upper date limit for which the appointment was created

num_results
integer
Default: 0
Enum: 0 1

If 1, the call returns only the number of appointments found

sort_by
string
Default: "start_date"
Enum: "start_date" "created"
sort_order
string
Default: "asc"
Enum: "asc" "desc"

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN&id=ID&employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&service_id=SERVICE_ID&client_id=CLIENT_ID&timezone_id=TIMEZONE_ID&status=STATUS&search_text=SEARCH_TEXT&client_name=CLIENT_NAME&client_email=CLIENT_EMAIL&custom_field_1=CUSTOM_FIELD_1&custom_field_2=CUSTOM_FIELD_2&custom_field_3=CUSTOM_FIELD_3&custom_field_4=CUSTOM_FIELD_4&custom_field_5=CUSTOM_FIELD_5&start_date=START_DATE&end_date=END_DATE&paid=PAID&start=START&end=END&updated_after=UPDATED_AFTER&updated_before=UPDATED_BEFORE&created_after=CREATED_AFTER&created_before=CREATED_BEFORE&num_results=NUM_RESULTS&sort_by=SORT_BY&sort_order=SORT_ORDER'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Create an Appointment

Create a new appointment.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

validate_custom_fields
integer
Default: 0
Enum: 0 1
Example: validate_custom_fields=1

When set to 1, enables strict validation of custom fields in the custom_data object. This enforces:

  • Required field validation: Returns an error if any custom field marked as required is missing or empty
  • Length validation: Returns an error if any field value exceeds the maximum length configured for that field
  • Dropdown options validation: Validates that values for dropdown fields (type 7) match the allowed options

When validation fails, the API returns an error with details about which fields failed validation.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "3123"

The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account

client_email
required
string <email>

The email of the client that made the appointment

client_name
required
string
Example: "Test Client"

The client name

service_id
required
integer <int64>
Example: "453"

The ID of the service that the appointment is made for

start_date
required
string
Example: "2019-09-01 12:00"

The date and time when the appointment is scheduled to start. The time is local to the company timezone or the location timezone (if the location is in a different timezone). The format of the date is yyyy-mm-dd hh:mm:ss

client_phone
string
Example: "12345678"

The client phone number

client_address
string

The client address

employee_id
integer <int64>
Example: "12412"

The ID of the employee (provider) that the appointment is made for

location_id
integer <int64>
Example: "54232"

The ID of the location where the appointment will take place at

duration
integer <int32> multiple of 15
Default: 15

The duration of the appointment in minutes

note
string or null

Custom client message

status
integer
Enum: 0 1 2 3 4 6 8 9 10 11 12 13

Appointment status. Possible values:

  • 0 - waiting email confirmation from the client
  • 1 - email confirmed but not validated by the admin/provider
  • 2 - email confirmed and validated or paid
  • 3 - declined or canceled
  • 4 - busy time imported from external sources (e.g. google)
  • 6 - busy time imported from Zapier
  • 8 - completed
  • 9 - no show (the scheduled event did not take place)
  • 10 - in progress
  • 11 - checked in
  • 12 - just arrived
  • 13 - delayed
subservices
string

IDs of sub services that were selected for the appointment separated by comma

paid
boolean
Default: false

Whether the appointment has been paid or not, if the service requires a payment.

price
integer
Default: 0
ews_id
string
Deprecated
Default: ""
object
Deprecated

The values of the booking form fields filled by the client.

Custom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under Booking Form.

object

Replaces the deprecated custom_fields property.

Custom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under Booking Form.

Expects an object containing key values pairs where the key matches one of your booking form field keys and the value is any custom data value.

timezone_id
integer <int32>
Example: "553"

The ID of the time zone in our database

Responses

Request samples

Content type
application/json
{
  • "company_id": 3123,
  • "client_email": "user@example.com",
  • "client_name": "Test Client",
  • "client_phone": "12345678",
  • "client_address": "string",
  • "employee_id": 12412,
  • "location_id": 54232,
  • "service_id": 453,
  • "start_date": "2019-09-01 12:00",
  • "duration": 15,
  • "note": "string",
  • "status": 0,
  • "subservices": "string",
  • "paid": false,
  • "price": 0,
  • "ews_id": "",
  • "custom_fields": {
    • "field index1": [
      ],
    • "field index2": [
      ]
    },
  • "custom_data": {
    • "key1": "Lorem Ipsum",
    • "key2": "Lorem Ipsum"
    },
  • "timezone_id": 553
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 2342,
    • "client_id": 23113,
    • "company_id": 3123,
    • "client_email": "user@example.com",
    • "client_name": "Test Client",
    • "client_phone": "12345678",
    • "client_address": "string",
    • "employee_id": 12412,
    • "location_id": 54232,
    • "service_id": 453,
    • "start_date": "2019-09-01 12:00",
    • "end_date": "2019-09-01 13:00",
    • "length": 1800000,
    • "duration_padding": 0,
    • "note": "string",
    • "status": 0,
    • "type": "string",
    • "subservices": "string",
    • "paid": false,
    • "price": 0,
    • "ews_id": "",
    • "custom_fields": {
      },
    • "custom_data": {
      },
    • "timezone_short": "GMT -05:00",
    • "timezone_offset_seconds": -18000,
    • "timezone_id": 553
    }
}

Get an Appointment

Get the details of a specific appointment.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Appointment id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify an Appointment

Modify the attributes for an existing appointment. Most commonly used to reschedule the appointment to a different date and time or to modify the appointment status.

Triggers Client Notification

By default triggers an email and SMS if configured. Learn More

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Appointment id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

validate_custom_fields
integer
Default: 0
Enum: 0 1
Example: validate_custom_fields=1

When set to 1, enables strict validation of custom fields in the custom_data object. This enforces:

  • Required field validation: Returns an error if any custom field marked as required is missing or empty
  • Length validation: Returns an error if any field value exceeds the maximum length configured for that field
  • Dropdown options validation: Validates that values for dropdown fields (type 7) match the allowed options

When validation fails, the API returns an error with details about which fields failed validation.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "3123"

The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account

client_email
required
string <email>

The email of the client that made the appointment

client_name
required
string
Example: "Test Client"

The client name

service_id
required
integer <int64>
Example: "453"

The ID of the service that the appointment is made for

start_date
required
string
Example: "2019-09-01 12:00"

The date and time when the appointment is scheduled to start. The time is local to the company timezone or the location timezone (if the location is in a different timezone). The format of the date is yyyy-mm-dd hh:mm:ss

client_phone
string
Example: "12345678"

The client phone number

client_address
string

The client address

employee_id
integer <int64>
Example: "12412"

The ID of the employee (provider) that the appointment is made for

location_id
integer <int64>
Example: "54232"

The ID of the location where the appointment will take place at

duration
integer <int32> multiple of 15
Default: 15

The duration of the appointment in minutes

note
string or null

Custom client message

status
integer
Enum: 0 1 2 3 4 6 8 9 10 11 12 13

Appointment status. Possible values:

  • 0 - waiting email confirmation from the client
  • 1 - email confirmed but not validated by the admin/provider
  • 2 - email confirmed and validated or paid
  • 3 - declined or canceled
  • 4 - busy time imported from external sources (e.g. google)
  • 6 - busy time imported from Zapier
  • 8 - completed
  • 9 - no show (the scheduled event did not take place)
  • 10 - in progress
  • 11 - checked in
  • 12 - just arrived
  • 13 - delayed
subservices
string

IDs of sub services that were selected for the appointment separated by comma

paid
boolean
Default: false

Whether the appointment has been paid or not, if the service requires a payment.

price
integer
Default: 0
ews_id
string
Deprecated
Default: ""
object
Deprecated

The values of the booking form fields filled by the client.

Custom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under Booking Form.

object

Replaces the deprecated custom_fields property.

Custom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under Booking Form.

Expects an object containing key values pairs where the key matches one of your booking form field keys and the value is any custom data value.

timezone_id
integer <int32>
Example: "553"

The ID of the time zone in our database

Responses

Request samples

Content type
application/json
{
  • "company_id": 3123,
  • "client_email": "user@example.com",
  • "client_name": "Test Client",
  • "client_phone": "12345678",
  • "client_address": "string",
  • "employee_id": 12412,
  • "location_id": 54232,
  • "service_id": 453,
  • "start_date": "2019-09-01 12:00",
  • "duration": 15,
  • "note": "string",
  • "status": 0,
  • "subservices": "string",
  • "paid": false,
  • "price": 0,
  • "ews_id": "",
  • "custom_fields": {
    • "field index1": [
      ],
    • "field index2": [
      ]
    },
  • "custom_data": {
    • "key1": "Lorem Ipsum",
    • "key2": "Lorem Ipsum"
    },
  • "timezone_id": 553
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 2342,
    • "old_id": 2342,
    • "client_id": 23113,
    • "company_id": 3123,
    • "client_email": "user@example.com",
    • "client_name": "Test Client",
    • "client_phone": "12345678",
    • "client_address": "string",
    • "employee_id": 12412,
    • "location_id": 54232,
    • "service_id": 453,
    • "start_date": "2019-09-01 12:00",
    • "end_date": "2019-09-01 13:00",
    • "length": 1800000,
    • "duration_padding": 0,
    • "note": "string",
    • "status": 0,
    • "type": "string",
    • "last_updated": "2024-03-15 16:00:50",
    • "created_at": "2024-03-15 16:00:50",
    • "subservices": "string",
    • "paid": false,
    • "price": 0,
    • "ews_id": "",
    • "custom_fields": {
      },
    • "custom_data": {
      },
    • "timezone_short": "GMT -05:00",
    • "timezone_offset_seconds": -18000,
    • "timezone_id": 553
    }
}

Delete an Appointment

Delete an existing appointment. This action is permanent and non-reversible. Consider using the cancel or decline endpoint instead of deleting an appointment.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Appointment id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request DELETE 'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}

List Appointments (Paginated)

Get a list of appointments and their attributes in a paginated format. Requires multiple calls.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

location_id
integer
Default: 0

Location ID

employee_id
integer
Default: 0

Employee ID

skip
integer
Default: 0

The number of results to skip

count
integer
Default: 10

The number of results to return

q
string
Default: ""

Search query

start_date
string
Default: ""

Start date

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/appointment/listView?session_token=SESSION_TOKEN&location_id=LOCATION_ID&employee_id=EMPLOYEE_ID&skip=SKIP&count=COUNT&q=Q&start_date=START_DATE'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "results": [
      ],
    • "last_rows": 100
    }
}

Verify appointment

Using this endpoint you can verify an appointment. This will initiate the verification system of an appointment. The client for that appointment will receive a “Verification required” email which will guide him in the verification process.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
appointment_id
integer
Example: "123"

Responses

Request samples

Content type
application/json
{
  • "appointment_id": 123
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 2342,
    • "client_id": 23113,
    • "company_id": 3123,
    • "client_email": "user@example.com",
    • "client_name": "Test Client",
    • "client_phone": "12345678",
    • "client_address": "string",
    • "employee_id": 12412,
    • "location_id": 54232,
    • "service_id": 453,
    • "start_date": "2019-09-01 12:00",
    • "end_date": "2019-09-01 13:00",
    • "length": 1800000,
    • "duration_padding": 0,
    • "note": "string",
    • "status": 0,
    • "type": "string",
    • "last_updated": "2024-03-15 16:00:50",
    • "created_at": "2024-03-15 16:00:50",
    • "subservices": "string",
    • "paid": false,
    • "price": 0,
    • "ews_id": "",
    • "custom_fields": {
      },
    • "custom_data": {
      },
    • "timezone_short": "GMT -05:00",
    • "timezone_offset_seconds": -18000,
    • "timezone_id": 553
    }
}

Confirm an Appointment

Confirm an existing appointment. View appointment status for definitions of available statuses.

Triggers Client Notification

By default triggers an email and SMS if configured. Learn More

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
appointment_id
integer
Example: "123"

Responses

Request samples

Content type
application/json
{
  • "appointment_id": 123
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 2342,
    • "client_id": 23113,
    • "company_id": 3123,
    • "client_email": "user@example.com",
    • "client_name": "Test Client",
    • "client_phone": "12345678",
    • "client_address": "string",
    • "employee_id": 12412,
    • "location_id": 54232,
    • "service_id": 453,
    • "start_date": "2019-09-01 12:00",
    • "end_date": "2019-09-01 13:00",
    • "length": 1800000,
    • "duration_padding": 0,
    • "note": "string",
    • "status": 0,
    • "type": "string",
    • "last_updated": "2024-03-15 16:00:50",
    • "created_at": "2024-03-15 16:00:50",
    • "subservices": "string",
    • "paid": false,
    • "price": 0,
    • "ews_id": "",
    • "custom_fields": {
      },
    • "timezone_short": "GMT -05:00",
    • "timezone_offset_seconds": -18000,
    • "timezone_id": 553
    }
}

Decline an Appointment

Decline an existing appointment. View appointment status for definitions of available statuses.

Triggers Client Notification

By default triggers an email and SMS if configured. Learn More

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
appointment_id
required
integer
Example: "123"
reason
required
string

Responses

Request samples

Content type
application/json
{
  • "appointment_id": 123,
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 2342,
    • "client_id": 23113,
    • "company_id": 3123,
    • "client_email": "user@example.com",
    • "client_name": "Test Client",
    • "client_phone": "12345678",
    • "client_address": "string",
    • "employee_id": 12412,
    • "location_id": 54232,
    • "service_id": 453,
    • "start_date": "2019-09-01 12:00",
    • "end_date": "2019-09-01 13:00",
    • "length": 1800000,
    • "duration_padding": 0,
    • "note": "string",
    • "status": 0,
    • "type": "string",
    • "last_updated": "2024-03-15 16:00:50",
    • "created_at": "2024-03-15 16:00:50",
    • "subservices": "string",
    • "paid": false,
    • "price": 0,
    • "ews_id": "",
    • "custom_fields": {
      },
    • "custom_data": {
      },
    • "timezone_short": "GMT -05:00",
    • "timezone_offset_seconds": -18000,
    • "timezone_id": 553
    }
}

Get Upcoming Appointments

List all existing future/upcoming appointments. Future appointments have a start date and time after the API call's date and time. This returns appointments with the statuses Unverified, Unconfirmed, and Confirmed only—view appointment status for definitions of available statuses.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

skip
integer
count
integer

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/appointment/upcoming?session_token=SESSION_TOKEN&skip=SKIP&count=COUNT'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "last_rows": true,
    • "records": [
      ]
    }
}

Get hash key for an appointment

Get the hash key for an existing appointment.

Authorizations:
session_token
path Parameters
id
required
integer
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

hash_type
string
Default: "reschedule"
Enum: "cancel" "reschedule" "confirm"

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/appointment/hash/{id}?session_token=SESSION_TOKEN&id=ID&hash_type=HASH_TYPE'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": "bkl43mfgn43k"
}

Send Appointment Reminder

Trigger an a reminder email and SMS (if configured) for a specific appointment.

Triggers Client Notification

By default triggers an email and SMS if configured. Learn More

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
appointment_id
required
integer
Example: "123"
send_to
string
Default: "both"
Enum: "client" "provider" "both"

Responses

Request samples

Content type
application/json
{
  • "appointment_id": 123,
  • "send_to": "client"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "Sent to provider/client/provider and client",
  • "data": { }
}

Availability

The availability object is available times an appointment can be scheduled or booked. Each appointment saved will require an availability (the date and time of the appointment or meeting).

For availability to be retrieved during booking, it requires a service, location, and employee (optional) to be stated.

Availability also controls the public holidays set on the account level, preventing these days from being available.

Get Availability

Get the available times to schedule an appointment.

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

service_id
required
integer <int64>
Example: service_id=2116

The ID of the selected service

start_date
required
string <date>
Example: start_date=2014-05-15

(YYYY-mm-dd) The day for which the availability is requested

t
required
string
Enum: "daily" "weekly"
Example: t=daily
  • If 'weekly', then the availability for the whole week of 'start_date' will be returned.
  • If 'daily', only the availability for 'start_date' will be returned
return
required
string
Enum: "boxes" "times"
Example: return=boxes
  • If 'boxes', the availability will be returned as a set of boxes representing fractions of an hour.
  • If 'times', the availability will be returned as times when the availability slots begin.
subservices
Array of integers
Example: subservices=2116&subservices=231

The IDs of the selected subservices

location_id
integer <int64>
Example: location_id=2116

The ID of the selected location

provider_id
integer <int64>
Example: provider_id=2116

The ID of the provider (employee)

timezone_id
integer <int32>
Example: timezone_id=553

The ID of the timezone relative to which the availability is calculated. Defaults to the location timezone.

first_available
boolean

When there is no availability from start_date to the end of the interval(t - daily/weekly), whole agenda is scanned until a first available time slot is returned.

available_seats
boolean

Retrieve available seats for an appointment start time. This will return the number of seats for an employee. If none is provided, a random employee will be selected and the number of seats for that employee will be returned.

total_seats
boolean

Use this parameter to get the total number of seats for all employees

no_of_weeks
integer [ 1 .. 5 ]
Example: no_of_weeks=4

Used to retreive the availability for one month. Accepted values are between 1 and 5

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/availability?service_id=SERVICE_ID&subservices=SUBSERVICES&location_id=LOCATION_ID&provider_id=PROVIDER_ID&start_date=START_DATE&t=T&return=RETURN&timezone_id=TIMEZONE_ID&first_available=FIRST_AVAILABLE&available_seats=AVAILABLE_SEATS&total_seats=TOTAL_SEATS&no_of_weeks=NO_OF_WEEKS'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "interval": 60,
    • "boxInterval": 5,
    • "padding": 0,
    • "day": 15,
    • "month": 8,
    • "year": 2012,
    • "times": [
      ]
    }
}

Create a Holiday

Create a new holiday.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "24232"
name
string
Example: "Christmas"
type
integer
Enum: 1 2

The type of the holiday:

  • 1 - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November
  • 2 - holidays with fixed dates. Example: Christmas
start_date
string <date-time>
Example: "2018-12-25 00:00:00"

The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with type = 2. For holidays with type = 1, the start date is calculated based on the values of day_in_week, month and day_order

end_date
string <date-time>
Example: "2018-12-26 23:59:59"

The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with type = 2. For holidays with type = 1, the start date is calculated based on the values of day_in_week, month and day_order

day_in_week
integer
Enum: 0 1 2 3 4 5 6

The number of weekday. Only for holidays with type = 1.

  • 0 - Monday
  • 1 - Tuesday
  • ...
  • 6 - Sunday
month
integer
Enum: 0 1 2 3 4 5 6 7 8 9 10 11

The number of weekday. Only for holidays with type = 1

  • 0 - January
  • 1 - February
  • ...
  • 11 - December
day_order
integer
Enum: 0 1 2 3 4

The order number of the weekday selected by week_in_day in the month selected by month. Only for holidays with type = 1

  • 0 - First
  • 1 - Second
  • 2 - Third
  • 3 - Fourth
  • 4 - Last
enabled
number
Default: 1
Enum: 0 1
timestamp
number
Example: "1542844800"

The timestamp of the holiday's start date in the current year

Responses

Request samples

Content type
application/json
{
  • "company_id": 24232,
  • "name": "Christmas",
  • "type": 1,
  • "start_date": "2018-12-25 00:00:00",
  • "end_date": "2018-12-26 23:59:59",
  • "day_in_week": 0,
  • "month": 0,
  • "day_order": 0,
  • "enabled": 0,
  • "timestamp": 1542844800
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 13425,
    • "company_id": 24232,
    • "name": "Christmas",
    • "type": 1,
    • "start_date": "2018-12-25 00:00:00",
    • "end_date": "2018-12-26 23:59:59",
    • "day_in_week": 0,
    • "month": 0,
    • "day_order": 0,
    • "year": 0,
    • "caption": "Dec 25th 2018 (Christmas)",
    • "enabled": 0,
    • "timestamp": 1542844800
    }
}

Modify a Holiday

Modify the attributes of an existing holiday.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Holiday id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "24232"
name
string
Example: "Christmas"
type
integer
Enum: 1 2

The type of the holiday:

  • 1 - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November
  • 2 - holidays with fixed dates. Example: Christmas
start_date
string <date-time>
Example: "2018-12-25 00:00:00"

The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with type = 2. For holidays with type = 1, the start date is calculated based on the values of day_in_week, month and day_order

end_date
string <date-time>
Example: "2018-12-26 23:59:59"

The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with type = 2. For holidays with type = 1, the start date is calculated based on the values of day_in_week, month and day_order

day_in_week
integer
Enum: 0 1 2 3 4 5 6

The number of weekday. Only for holidays with type = 1.

  • 0 - Monday
  • 1 - Tuesday
  • ...
  • 6 - Sunday
month
integer
Enum: 0 1 2 3 4 5 6 7 8 9 10 11

The number of weekday. Only for holidays with type = 1

  • 0 - January
  • 1 - February
  • ...
  • 11 - December
day_order
integer
Enum: 0 1 2 3 4

The order number of the weekday selected by week_in_day in the month selected by month. Only for holidays with type = 1

  • 0 - First
  • 1 - Second
  • 2 - Third
  • 3 - Fourth
  • 4 - Last
enabled
number
Default: 1
Enum: 0 1
timestamp
number
Example: "1542844800"

The timestamp of the holiday's start date in the current year

Responses

Request samples

Content type
application/json
{
  • "company_id": 24232,
  • "name": "Christmas",
  • "type": 1,
  • "start_date": "2018-12-25 00:00:00",
  • "end_date": "2018-12-26 23:59:59",
  • "day_in_week": 0,
  • "month": 0,
  • "day_order": 0,
  • "enabled": 0,
  • "timestamp": 1542844800
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 13425,
    • "company_id": 24232,
    • "name": "Christmas",
    • "type": 1,
    • "start_date": "2018-12-25 00:00:00",
    • "end_date": "2018-12-26 23:59:59",
    • "day_in_week": 0,
    • "month": 0,
    • "day_order": 0,
    • "year": 0,
    • "caption": "Dec 25th 2018 (Christmas)",
    • "enabled": 0,
    • "timestamp": 1542844800
    }
}

List Holidays

Get a list of all holidays and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/availability/getHoliday?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Get a Holiday

Get the attributes of a specific holiday.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Holiday id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/availability/getHoliday/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 13425,
    • "company_id": 24232,
    • "name": "Christmas",
    • "type": 1,
    • "start_date": "2018-12-25 00:00:00",
    • "end_date": "2018-12-26 23:59:59",
    • "day_in_week": 0,
    • "month": 0,
    • "day_order": 0,
    • "year": 0,
    • "caption": "Dec 25th 2018 (Christmas)",
    • "enabled": 0,
    • "timestamp": 1542844800
    }
}

Delete Holidays

Delete one or more existing holidays.

Authorizations:
session_token
path Parameters
ids
required
string
Example: 234,543

A list of holiday ids, separated by comma. Example:

  • 234,345
  • 234
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request POST 'https://www.setster.com/api/v2/availability/deleteHoliday/{ids}?session_token=SESSION_TOKEN&ids=IDS'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": true
}

Client

A client is automatically created or updated with each appointment saved. They are assigned an ID based on their unique email address.

List Clients

Get a list of all clients and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

q
string

Search string

start
integer
Default: 0

List pager

end
integer
Default: 100

List pager / 'all' - no limit

client_id
integer
employee_id
integer
email
string
name
string
phone
string
last_app_date
string
notes
string
preferences
string
address
string
address2
string
city
string
state
string
zip
string
country
string
gender
string
birthday
string
client_since
string
accept_emails
string
photo
string

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN&q=Q&start=START&end=END&client_id=CLIENT_ID&employee_id=EMPLOYEE_ID&email=EMAIL&name=NAME&phone=PHONE&last_app_date=LAST_APP_DATE&notes=NOTES&preferences=PREFERENCES&address=ADDRESS&address2=ADDRESS2&city=CITY&state=STATE&zip=ZIP&country=COUNTRY&gender=GENDER&birthday=BIRTHDAY&client_since=CLIENT_SINCE&accept_emails=ACCEPT_EMAILS&photo=PHOTO'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Create a Client

Create a new client.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
email
required
string <email>

The email of the client

name
required
string
Example: "Test Client"

The full name of the client

phone
string
Example: "3445323523"

Client's phone number

notes
string
preferences
string
address
string
Example: "City country"

Client's address

address2
string
city
string
state
string
zip
string
country
string
gender
string or null
Enum: "m" "f"

The gender of the client

birthday
string <date>

Only the day and month are relevant

cient_since
string <date>

The date the client first scheduled an appointment or was created. This field is editable.

accept_emails
boolean

Whether or not the client accepts email marketing

photo
string

The base name of the photo file. If not null or empty, it can be used to get the client photo:

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "name": "Test Client",
  • "phone": "3445323523",
  • "notes": "string",
  • "preferences": "string",
  • "address": "City country",
  • "address2": "string",
  • "city": "string",
  • "state": "string",
  • "zip": "string",
  • "country": "string",
  • "gender": "m",
  • "birthday": "2019-08-24",
  • "cient_since": "2019-08-24",
  • "accept_emails": true,
  • "photo": "string"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "client_id": 3213,
    • "company_id": 24232,
    • "employee_id": 5323,
    • "email": "user@example.com",
    • "name": "Test Client",
    • "phone": "3445323523",
    • "last_app_date": "2019-08-24T14:15:22Z",
    • "date_created": "2019-08-24T14:15:22Z",
    • "notes": "string",
    • "preferences": "string",
    • "address": "City country",
    • "address2": "string",
    • "city": "string",
    • "state": "string",
    • "zip": "string",
    • "country": "string",
    • "gender": "m",
    • "birthday": "2019-08-24",
    • "cient_since": "2019-08-24",
    • "accept_emails": true,
    • "photo": "string"
    }
}

Get a Client

Get the attributes of a specific client.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Client id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify a Client

Modify the attributes of an existing client.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Client id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
email
required
string <email>

The email of the client

name
required
string
Example: "Test Client"

The full name of the client

phone
string
Example: "3445323523"

Client's phone number

notes
string
preferences
string
address
string
Example: "City country"

Client's address

address2
string
city
string
state
string
zip
string
country
string
gender
string or null
Enum: "m" "f"

The gender of the client

birthday
string <date>

Only the day and month are relevant

cient_since
string <date>

The date the client first scheduled an appointment or was created. This field is editable.

accept_emails
boolean

Whether or not the client accepts email marketing

photo
string

The base name of the photo file. If not null or empty, it can be used to get the client photo:

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "name": "Test Client",
  • "phone": "3445323523",
  • "notes": "string",
  • "preferences": "string",
  • "address": "City country",
  • "address2": "string",
  • "city": "string",
  • "state": "string",
  • "zip": "string",
  • "country": "string",
  • "gender": "m",
  • "birthday": "2019-08-24",
  • "cient_since": "2019-08-24",
  • "accept_emails": true,
  • "photo": "string"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "client_id": 3213,
    • "company_id": 24232,
    • "employee_id": 5323,
    • "email": "user@example.com",
    • "name": "Test Client",
    • "phone": "3445323523",
    • "last_app_date": "2019-08-24T14:15:22Z",
    • "date_created": "2019-08-24T14:15:22Z",
    • "notes": "string",
    • "preferences": "string",
    • "address": "City country",
    • "address2": "string",
    • "city": "string",
    • "state": "string",
    • "zip": "string",
    • "country": "string",
    • "gender": "m",
    • "birthday": "2019-08-24",
    • "cient_since": "2019-08-24",
    • "accept_emails": true,
    • "photo": "string"
    }
}

Delete a Client

Delete an existing client.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Client id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request DELETE 'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}

Upload a Client Photo

Using this endpoint you can add/update the client picture

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: multipart/form-data
photo
string <binary>

Responses

Request samples

curl --location --request POST 'https://www.setster.com/api/v2/client/uploadPicture?session_token=SESSION_TOKEN'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "upload_id": 32412,
    • "file_name": "avatar.png",
    • "file_location": "/admin/images/clients/"
    }
}

Custom Fields

Custom fields, also known as booking forms in the Setster plug-and-play widget, are additional data sets saved with each appointment. These can be general questions asked clients during booking, for example: "How did you hear about us?" or they can be hidden data passed with the appointment, for example, "Order ID".

Keep in mind the phone and address inputs within an appointment are considered custom fields as well.

List Custom Fields

Get a list of all custom fields and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

id
integer

Custom field id

label
string
length
integer
type
integer
required
integer
status
integer
visibility
integer
readonly
integer
removable
integer
readonly_type
integer
hint
string

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN&id=ID&label=LABEL&length=LENGTH&type=TYPE&required=REQUIRED&status=STATUS&visibility=VISIBILITY&readonly=READONLY&removable=REMOVABLE&readonly_type=READONLY_TYPE&hint=HINT'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Create a Custom Field

Create a new custom field.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>

The ID of the company that the custom field belongs to

label
required
string

The label of the custom field

length
required
integer

The max string length of the custom field

type
required
integer
Default: 0
Enum: 0 1 2 3 4 5 6 7

Type of the custom field. Possible values:

  • 0 - text
  • 1 - multiline
  • 2 - phone
  • 3 - email
  • 4 - hidden
  • 5 - address
  • 6 - title
  • 7 - dropdown
required
required
boolean
Default: false

If the custom field is mandatory in the booking form

ord
required
integer

The order in layout

status
required
boolean

The enabled/disabled status.

visibility
required
integer
Enum: 1 2 3

Places where the custom field is visible. Possible values:

  • 1 - Appointment submit form
  • 2 - Contact form
  • 3 - Both forms
readonly
required
boolean
Default: false

The readonly property of the custom field form.

hint
required
string

The hint property of the custom field form

removable
boolean
Default: false
readonly_type
integer
options
string
Example: "Option A|Option B|Option C"

Dropdown options stored as a pipe-delimited string. Required when type is 7 (dropdown). Example: Option1|Option2|Option3

multiselect
integer
Default: 0
Enum: 0 1

For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.

Responses

Request samples

Content type
application/json
{
  • "company_id": 0,
  • "label": "string",
  • "length": 0,
  • "type": 0,
  • "required": false,
  • "ord": 0,
  • "status": true,
  • "visibility": 1,
  • "readonly": false,
  • "removable": false,
  • "readonly_type": 0,
  • "hint": "string",
  • "options": "Option A|Option B|Option C",
  • "multiselect": 0
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 0,
    • "company_id": 0,
    • "label": "string",
    • "length": 0,
    • "type": 0,
    • "required": false,
    • "ord": 0,
    • "status": true,
    • "visibility": 1,
    • "readonly": false,
    • "removable": false,
    • "readonly_type": 0,
    • "hint": "string",
    • "options": "Option A|Option B|Option C",
    • "multiselect": 0
    }
}

Get a Custom Field

Get the attributes of a specific custom field.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Custom Field id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify a Custom Field

Modify the attributes of an existing custom field.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Custom field id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>

The ID of the company that the custom field belongs to

label
required
string

The label of the custom field

length
required
integer

The max string length of the custom field

type
required
integer
Default: 0
Enum: 0 1 2 3 4 5 6 7

Type of the custom field. Possible values:

  • 0 - text
  • 1 - multiline
  • 2 - phone
  • 3 - email
  • 4 - hidden
  • 5 - address
  • 6 - title
  • 7 - dropdown
required
required
boolean
Default: false

If the custom field is mandatory in the booking form

ord
required
integer

The order in layout

status
required
boolean

The enabled/disabled status.

visibility
required
integer
Enum: 1 2 3

Places where the custom field is visible. Possible values:

  • 1 - Appointment submit form
  • 2 - Contact form
  • 3 - Both forms
readonly
required
boolean
Default: false

The readonly property of the custom field form.

hint
required
string

The hint property of the custom field form

removable
boolean
Default: false
readonly_type
integer
options
string
Example: "Option A|Option B|Option C"

Dropdown options stored as a pipe-delimited string. Required when type is 7 (dropdown). Example: Option1|Option2|Option3

multiselect
integer
Default: 0
Enum: 0 1

For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.

Responses

Request samples

Content type
application/json
{
  • "company_id": 0,
  • "label": "string",
  • "length": 0,
  • "type": 0,
  • "required": false,
  • "ord": 0,
  • "status": true,
  • "visibility": 1,
  • "readonly": false,
  • "removable": false,
  • "readonly_type": 0,
  • "hint": "string",
  • "options": "Option A|Option B|Option C",
  • "multiselect": 0
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 0,
    • "company_id": 0,
    • "label": "string",
    • "length": 0,
    • "type": 0,
    • "required": false,
    • "ord": 0,
    • "status": true,
    • "visibility": 1,
    • "readonly": false,
    • "removable": false,
    • "readonly_type": 0,
    • "hint": "string",
    • "options": "Option A|Option B|Option C",
    • "multiselect": 0
    }
}

Delete a Custom Field

Delete a specific custom field.

Authorizations:
session_token
path Parameters
id
required
integer

Custom field id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request DELETE 'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}

Create or Modify Multiple Custom Fields

Create or modify multiple custom fields.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
Array
company_id
required
integer <int64>

The ID of the company that the custom field belongs to

label
required
string

The label of the custom field

length
required
integer

The max string length of the custom field

type
required
integer
Default: 0
Enum: 0 1 2 3 4 5 6 7

Type of the custom field. Possible values:

  • 0 - text
  • 1 - multiline
  • 2 - phone
  • 3 - email
  • 4 - hidden
  • 5 - address
  • 6 - title
  • 7 - dropdown
required
required
boolean
Default: false

If the custom field is mandatory in the booking form

ord
required
integer

The order in layout

status
required
boolean

The enabled/disabled status.

visibility
required
integer
Enum: 1 2 3

Places where the custom field is visible. Possible values:

  • 1 - Appointment submit form
  • 2 - Contact form
  • 3 - Both forms
readonly
required
boolean
Default: false

The readonly property of the custom field form.

hint
required
string

The hint property of the custom field form

removable
boolean
Default: false
readonly_type
integer
options
string

Pipe-delimited list of options for dropdown fields (type 7). Example: "Option A|Option B|Option C"

multiselect
integer
Default: 0
Enum: 0 1

For dropdown fields (type 7): 0 = single select, 1 = multi-select

Responses

Request samples

Content type
application/json
[
  • {
    • "company_id": 0,
    • "label": "string",
    • "length": 0,
    • "type": 0,
    • "required": false,
    • "ord": 0,
    • "status": true,
    • "visibility": 1,
    • "readonly": false,
    • "removable": false,
    • "readonly_type": 0,
    • "hint": "string",
    • "options": "string",
    • "multiselect": 0
    }
]

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Employee

An employee or also know as a staff member or a service provider can mean different things in different business models:

  1. An actual person who accepts appointments or manages a team. Each employee will have their own calendar and their own schedule and services they offer and can be linked to single or multiple locations. An assistant or receptionist that does not accept appointments is still considered an employee but will need to be set as INACTIVE "status": false. This employee can be named; for example: "John Smith" or can be generic such as "Support Person 1".

  2. Group or department, so if your business operates in teams or departments for a single appointment, this team is considered a single employee. They offer services as a group, and their calendar and schedule are combined—for example, the "HR Department".

  3. A virtual entity, for example, if you rent out meeting rooms, an employee, in this case, is the room. The meeting room will have a calendar for others to book a time on. In this case, you would name the employee "Meeting Room A" for example.

Keep in mind if your business operates generically, you can name your staff to match. For example "Clerk" or "Shopping Assistant". You can also opt to allow clients to pick an employee during booking or automatically assign appointments to the appropriate employee using a round-robin approach.

List Employees

Get a list of all employees and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

id
integer

Employee id

statuses
string
Value: "all"

By default only active employees are returned. This filter allows to return all the employees, including the inactive ones

status
integer
Enum: 0 1
include_links
boolean
email
string
first_name
string
last_name
string
job
string
bio
string
phone
string
photo_url
string
public_email
boolean
public_phone
boolean
receivesms
boolean
sms_email
string
intuit_user_id
string
ipp_mode
integer
intuit_auth_id
string
intuit_realm_id
string
intuit_ticket_id
string
newsletter
boolean
is_owner
boolean
ics_service
string
ics_export_service
string
ics_url
string
ics_export_hash
string
google_export_canceled
boolean
google_export_add_pt
boolean
username
string
nickname
string
linkedin
string <uri>
yelp
string <uri>
pinterest
string <uri>
vimeo
string <uri>
youtube
string <uri>
twitter
string <uri>
facebook
string <uri>

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN&id=ID&statuses=STATUSES&status=STATUS&include_links=INCLUDE_LINKS&email=EMAIL&first_name=FIRST_NAME&last_name=LAST_NAME&job=JOB&bio=BIO&phone=PHONE&photo_url=PHOTO_URL&public_email=PUBLIC_EMAIL&public_phone=PUBLIC_PHONE&receivesms=RECEIVESMS&sms_email=SMS_EMAIL&intuit_user_id=INTUIT_USER_ID&ipp_mode=IPP_MODE&intuit_auth_id=INTUIT_AUTH_ID&intuit_realm_id=INTUIT_REALM_ID&intuit_ticket_id=INTUIT_TICKET_ID&newsletter=NEWSLETTER&is_owner=IS_OWNER&ics_service=ICS_SERVICE&ics_export_service=ICS_EXPORT_SERVICE&ics_url=ICS_URL&ics_export_hash=ICS_EXPORT_HASH&google_export_canceled=GOOGLE_EXPORT_CANCELED&google_export_add_pt=GOOGLE_EXPORT_ADD_PT&username=USERNAME&nickname=NICKNAME&linkedin=LINKEDIN&yelp=YELP&pinterest=PINTEREST&vimeo=VIMEO&youtube=YOUTUBE&twitter=TWITTER&facebook=FACEBOOK'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Create an Employee

Create a new employee.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "3214"

The ID of the company of the employee. Field is writable when entity is owned by child account.

email
required
string <email>

Unique Email address of the employee

first_name
required
string
Example: "John"

First Name

last_name
required
string
Example: "Doe"

Last Name

required
Array of objects
Example: "[object Object]"

Links with locations and services

job
string
Example: "Accountant"

Job name

bio
string

Bio

phone
string
Example: ""

Phone number

photo_url
string <uri>
Example: ""

Photo URL

public_email
boolean
Default: false

Whether or not the employee's email will be displayed on the widget

public_phone
boolean
Default: false
status
boolean
Default: false

Employee status: active / inactive

nickname
string
Example: ""

Unique nickname per company. May contain only letters, digits, the dot character and the underline character.

linkedin
string <uri>
Default: ""

LinkedIn URL

yelp
string <uri>
pinterest
string <uri>
vimeo
string <uri>
youtube
string <uri>
twitter
string <uri>
Example: ""

Twitter URL

facebook
string <uri>
Example: ""

Facebook URL

receivesms
boolean
Default: false

If true (1) then the employee will receive an SMS message informing them about new appointments

sms_email
string <email>
Example: "number@txt.att.net"

The SMS service to be used in the following format: number@sms-service.com. Note: the number keyword will be replaced with the employee's phone number before the SMS is sent.

intuit_user_id
string
ipp_mode
integer
intuit_auth_id
string
intuit_db_id
string
intuit_realm_id
string
intuit_ticket_id
string
newsletter
integer
ics_service
integer <int32>
Default: 0
Enum: 0 1 2 3

Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exchange

ics_export_service
integer <int32>
Default: 0
Enum: 0 1 2 3 4 5 6

Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav

ics_url
string <uri>

iCalendar public url used as import source.

ics_export_hash
string
google_export_canceled
integer
Default: 0
google_export_add_pt
integer
Default: 0
permissions
string
Example: "locations, providers"

Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account

password
string
send_invite_email
boolean

Available only when creating a new employee - will send an email to the email address of the newly created employee

Responses

Request samples

Content type
application/json
{
  • "company_id": 3214,
  • "email": "user@example.com",
  • "first_name": "John",
  • "last_name": "Doe",
  • "job": "Accountant",
  • "bio": "string",
  • "phone": "",
  • "photo_url": "",
  • "public_email": false,
  • "public_phone": false,
  • "status": false,
  • "nickname": "",
  • "linkedin": "",
  • "pinterest": "http://example.com",
  • "vimeo": "http://example.com",
  • "youtube": "http://example.com",
  • "twitter": "",
  • "facebook": "",
  • "receivesms": false,
  • "sms_email": "number@txt.att.net",
  • "intuit_user_id": "string",
  • "ipp_mode": 0,
  • "intuit_auth_id": "string",
  • "intuit_db_id": "string",
  • "intuit_realm_id": "string",
  • "intuit_ticket_id": "string",
  • "newsletter": 0,
  • "ics_service": 0,
  • "ics_export_service": 0,
  • "ics_url": "http://example.com",
  • "ics_export_hash": "string",
  • "google_export_canceled": 0,
  • "google_export_add_pt": 0,
  • "permissions": "locations, providers",
  • "password": "string",
  • "send_invite_email": true,
  • "links": {
    • "[LOCATION_ID]": {
      }
    }
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Get an Employee

Get the attributes of a specific employee.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Employee id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify an Employee

Modify the attributes of an existing employee.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Employee id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "3214"

The ID of the company of the employee. Field is writable when entity is owned by child account.

email
required
string <email>

Unique Email address of the employee

first_name
required
string
Example: "John"

First Name

last_name
required
string
Example: "Doe"

Last Name

required
Array of objects
Example: "[object Object]"

Links with locations and services

job
string
Example: "Accountant"

Job name

bio
string

Bio

phone
string
Example: ""

Phone number

photo_url
string <uri>
Example: ""

Photo URL

public_email
boolean
Default: false

Whether or not the employee's email will be displayed on the widget

public_phone
boolean
Default: false
status
boolean
Default: false

Employee status: active / inactive

nickname
string
Example: ""

Unique nickname per company. May contain only letters, digits, the dot character and the underline character.

linkedin
string <uri>
Default: ""

LinkedIn URL

yelp
string <uri>
pinterest
string <uri>
vimeo
string <uri>
youtube
string <uri>
twitter
string <uri>
Example: ""

Twitter URL

facebook
string <uri>
Example: ""

Facebook URL

receivesms
boolean
Default: false

If true (1) then the employee will receive an SMS message informing them about new appointments

sms_email
string <email>
Example: "number@txt.att.net"

The SMS service to be used in the following format: number@sms-service.com. Note: the number keyword will be replaced with the employee's phone number before the SMS is sent.

intuit_user_id
string
ipp_mode
integer
intuit_auth_id
string
intuit_db_id
string
intuit_realm_id
string
intuit_ticket_id
string
newsletter
integer
ics_service
integer <int32>
Default: 0
Enum: 0 1 2 3

Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exchange

ics_export_service
integer <int32>
Default: 0
Enum: 0 1 2 3 4 5 6

Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav

ics_url
string <uri>

iCalendar public url used as import source.

ics_export_hash
string
google_export_canceled
integer
Default: 0
google_export_add_pt
integer
Default: 0
permissions
string
Example: "locations, providers"

Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account

password
string
send_invite_email
boolean

Available only when creating a new employee - will send an email to the email address of the newly created employee

Responses

Request samples

Content type
application/json
{
  • "company_id": 3214,
  • "email": "user@example.com",
  • "first_name": "John",
  • "last_name": "Doe",
  • "job": "Accountant",
  • "bio": "string",
  • "phone": "",
  • "photo_url": "",
  • "public_email": false,
  • "public_phone": false,
  • "status": false,
  • "nickname": "",
  • "linkedin": "",
  • "pinterest": "http://example.com",
  • "vimeo": "http://example.com",
  • "youtube": "http://example.com",
  • "twitter": "",
  • "facebook": "",
  • "receivesms": false,
  • "sms_email": "number@txt.att.net",
  • "intuit_user_id": "string",
  • "ipp_mode": 0,
  • "intuit_auth_id": "string",
  • "intuit_db_id": "string",
  • "intuit_realm_id": "string",
  • "intuit_ticket_id": "string",
  • "newsletter": 0,
  • "ics_service": 0,
  • "ics_export_service": 0,
  • "ics_url": "http://example.com",
  • "ics_export_hash": "string",
  • "google_export_canceled": 0,
  • "google_export_add_pt": 0,
  • "permissions": "locations, providers",
  • "password": "string",
  • "send_invite_email": true,
  • "links": {
    • "[LOCATION_ID]": {
      }
    }
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Delete an Employee

Delete an existing employee.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Employee id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request DELETE 'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}

Update availability

Update or change the availability (working hours or available times) of a specific employee.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Employee id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "1234"

Company id

Array of objects

Responses

Request samples

Content type
application/json
{
  • "company_id": 1234,
  • "availabilities": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}

Link an employee to all locations and services

Link or assign a specific employee to all existing locations and services.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

employee_id
required
integer <int64>

Employee id

Request Body schema: application/json
object

The following format is used: { LOCATION_ID: [ SERVICE_1, SERVICE_2, ...]} To assign services to all locations for an employee: {0: [SERVICE_1, SERVICE_2, ...]}

Responses

Request samples

Content type
application/json
{
  • "45634": [
    • 232,
    • 34534
    ]
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Sync Employee Calendar

Force the calendar sync to occur for a specific employee. Please note this option is only available if the employee is syncing with an Internet Calendar or Google Calendar and is not available for Microsoft Calendars as they rely on Microsoft's PUSH functionality.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Employee id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

export
boolean
Example: export=1

If not present default action is the import

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/employee/sync/{id}?session_token=SESSION_TOKEN&id=ID&export=EXPORT'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "SYNCED",
  • "data": { }
}

Get availability time

Get the availability of a specific employee in dates and times format.

Authorizations:
session_token
path Parameters
id
required
integer

Employee id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/employee/getAvailabilityTime/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "availabilities": [
      ]
    }
}

Get availability

Get the availability of a specific employee in boxes format.

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

employee_id
required
integer <int64>

Employee id

location_id
required
integer <int64>

Location id

start_date
required
string

Start Date

end_date
required
string

End Date

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/employee/getAvailability?employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&start_date=START_DATE&end_date=END_DATE'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "start_date": "2018-09-01 12:12:12",
    • "end_date": "2018-09-03 12:12:12",
    • "boxes": {
      }
    }
}

Upload an Employee Photo

Add or update the image of a specific employee.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

provider
integer <int64>

Employee id

Request Body schema: multipart/form-data
photo
string <binary>

Responses

Request samples

curl --location --request POST 'https://www.setster.com/api/v2/employee/uploadPhoto?session_token=SESSION_TOKEN&provider=PROVIDER'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "upload_id": 32412,
    • "file_name": "avatar.png",
    • "file_location": "/admin/images/clients/"
    }
}

Delete an Employee Photo

Delete the image of a specific employee.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

provider
integer <int64>

Employee id

Request Body schema: application/json
file_name
required
string
provider
integer
Example: "2342"

Employee Id

Responses

Request samples

Content type
application/json
{
  • "file_name": "string",
  • "provider": 2342
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Update Employee's Sort Order

Change the sort order of the employees in the list.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
Array
id
required
integer
Example: "27864"

Employee id

ord
required
integer
Example: "3"

The order number in the list

Responses

Request samples

Content type
application/json
[
  • {
    • "id": 27864,
    • "ord": 3
    }
]

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Check Nickname Availability

Check whether a specific nickname is available to use.

Authorizations:
session_token
path Parameters
nickname
required
string
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/employee/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "SYNCED",
  • "data": { }
}

Location

A location is the defined place where the appointment or the meeting will take place, and multiple locations can be created within an account. A location can be:

  1. A physical or a geographical location of your business - If you meet with clients at your business, then this is considered a physical location. A physical location requires a full address.

  2. A virtual location - If you meet clients virtually, on the phone, or at their own location (home or office), then this is considered a virtual location.

  3. A department in your business - If you offer different services per department, then you can use the location feature to separate these departments. In this case, a location can be either geographical or virtual, depending on where you will be meeting.

List Locations

Get a list of all locations and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

id
integer

Location ID

name
string
description
string
street1
string
street2
string
city
string
state
string
zip
string
phone
string
email
string
website
string
lat
number
lng
number
country
string
tags
string
photo
string
paypal_email
string
timezone_id
integer

The timezone id

virtual
boolean
tmp_default
boolean
has_links
boolean
include_links
boolean

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN&id=ID&name=NAME&description=DESCRIPTION&street1=STREET1&street2=STREET2&city=CITY&state=STATE&zip=ZIP&phone=PHONE&email=EMAIL&website=WEBSITE&lat=LAT&lng=LNG&country=COUNTRY&tags=TAGS&photo=PHOTO&paypal_email=PAYPAL_EMAIL&timezone_id=TIMEZONE_ID&virtual=VIRTUAL&tmp_default=TMP_DEFAULT&has_links=HAS_LINKS&include_links=INCLUDE_LINKS'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Create a Location

Create a new location.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "432"

The ID of the company that owns the location. Field is writable when entity is owned by child accounts.

name
required
string
Example: "Spa center"

Name of the location

description
string
Default: ""

Description of the location

virtual
boolean
Default: false
street1
string
Example: "13 Beverly"

Address line 1

street2
string
Example: ""

Address line 2

city
string
Example: "New York"

City

state
string
Example: "NY"

State

zip
string
Example: "10501"

Zip

country
string
Example: ""

Country

photo
string <uri>
Example: ""

Photo URL

phone
string
Default: ""

Phone number

email
string <email>

Email address

website
string <uri>
Example: ""

Website URL

tags
string
Default: ""
paypal_email
string <email>

The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used.

timezone_id
string
Example: "553"

The ID of the time zone

lat
number <float>

The latitude of the location automatically calculated based on its address

lng
number <float>

The longitude of the location automatically calculated based on its address

update_lat_lng
boolean
Default: false

Available only on update. If true (1) then the lat and lng values will be automatically calculated

string or object
Example: "[object Object]"

Links with employees and services.

If links: "all", all providers and services will be linked to this location.

If links: {EMPLOYEE_ID: "all"}, all services will be linked to this location for the provider with EMPLOYEE_ID id.

If links: {"all": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}, the services with id's SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers

If links: {"EMPLOYEE_ID_1": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, "EMPLOYEE_ID_2": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }, the specified services will be linked with the specified providers

Responses

Request samples

Content type
application/json
{
  • "name": "Spa center",
  • "description": "",
  • "company_id": 432,
  • "virtual": false,
  • "street1": "13 Beverly",
  • "street2": "",
  • "city": "New York",
  • "state": "NY",
  • "zip": "10501",
  • "country": "",
  • "photo": "",
  • "phone": "",
  • "email": "user@example.com",
  • "website": "",
  • "tags": "",
  • "paypal_email": "user@example.com",
  • "timezone_id": 553,
  • "lat": 0.1,
  • "lng": 0.1,
  • "update_lat_lng": false,
  • "links": {
    • "344": {
      },
    • "345": "all",
    • "all": {
      }
    }
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Get a Location

Get the attributes of a specific location.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Location id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify a Location

Modify the attributes of an existing location.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Location id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "432"

The ID of the company that owns the location. Field is writable when entity is owned by child accounts.

name
required
string
Example: "Spa center"

Name of the location

description
string
Default: ""

Description of the location

virtual
boolean
Default: false
street1
string
Example: "13 Beverly"

Address line 1

street2
string
Example: ""

Address line 2

city
string
Example: "New York"

City

state
string
Example: "NY"

State

zip
string
Example: "10501"

Zip

country
string
Example: ""

Country

photo
string <uri>
Example: ""

Photo URL

phone
string
Default: ""

Phone number

email
string <email>

Email address

website
string <uri>
Example: ""

Website URL

tags
string
Default: ""
paypal_email
string <email>

The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used.

timezone_id
string
Example: "553"

The ID of the time zone

lat
number <float>

The latitude of the location automatically calculated based on its address

lng
number <float>

The longitude of the location automatically calculated based on its address

update_lat_lng
boolean
Default: false

Available only on update. If true (1) then the lat and lng values will be automatically calculated

string or object
Example: "[object Object]"

Links with employees and services.

If links: "all", all providers and services will be linked to this location.

If links: {EMPLOYEE_ID: "all"}, all services will be linked to this location for the provider with EMPLOYEE_ID id.

If links: {"all": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}, the services with id's SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers

If links: {"EMPLOYEE_ID_1": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, "EMPLOYEE_ID_2": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }, the specified services will be linked with the specified providers

Responses

Request samples

Content type
application/json
{
  • "name": "Spa center",
  • "description": "",
  • "company_id": 432,
  • "virtual": false,
  • "street1": "13 Beverly",
  • "street2": "",
  • "city": "New York",
  • "state": "NY",
  • "zip": "10501",
  • "country": "",
  • "photo": "",
  • "phone": "",
  • "email": "user@example.com",
  • "website": "",
  • "tags": "",
  • "paypal_email": "user@example.com",
  • "timezone_id": 553,
  • "lat": 0.1,
  • "lng": 0.1,
  • "update_lat_lng": false,
  • "links": {
    • "344": {
      },
    • "345": "all",
    • "all": {
      }
    }
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Delete a Location

Delete an existing location.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Location id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request DELETE 'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}

Link a location to all services and employees

Link or assign a specific location to all existing employees and services.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

location_id
integer <int64>

Location id

Request Body schema: application/json
object

The following format is used: { PROVIDER_ID: [ SERVICE_1, SERVICE_2, ...]} To assign services to all providers at a location use: {0: [SERVICE_1, SERVICE_2, ...]}

Responses

Request samples

Content type
application/json
{
  • "45634": [
    • 232,
    • 34534
    ]
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Upload a Location Photo

Add or update the image of a specific location.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

location
integer <int64>

Location id

Request Body schema: multipart/form-data
photo
string <binary>

Responses

Request samples

curl --location --request POST 'https://www.setster.com/api/v2/location/uploadPhoto?session_token=SESSION_TOKEN&location=LOCATION'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "upload_id": 32412,
    • "file_name": "avatar.png",
    • "file_location": "/admin/images/clients/"
    }
}

Delete a Location Photo

Delete the image of a specific location.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

location
integer <int64>

Location id

Request Body schema: application/json
file_name
required
string

Responses

Request samples

Content type
application/json
{
  • "file_name": "string"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Update Location's Sort Order

Change the sort order of the locations in the list.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
Array
id
required
integer
Example: "27864"

Location id

ord
required
integer
Example: "3"

The order number in the list

Responses

Request samples

Content type
application/json
[
  • {
    • "id": 27864,
    • "ord": 3
    }
]

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Service

The services are offerings of a company or catalog of available appointment pr meeting types. The service is a required field when booking an appointment and offers the most flexibility in booking logic and appointment settings. A service can be:

  1. A primary offering and relies on the employee availability for booking.
  2. An event - relies on a set schedule that occurs at specific dates and times. This can be a single occurring event like a conference, or a recurring time, for example, mornings only on specific days. set_schedule=true
  3. An add-on or sub-service to a service is an additional service the client can opt to add during booking. This adds additional time to the appointment duration. is_subservice=true

List Services

Get a list of all services and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

id
integer

Service id

location_id
integer

Location id

active_services
boolean
Default: false

Return only active services

description
string
auto_confirm
boolean
is_subservice
boolean
duration
integer multiple of 15
duration_padding
integer multiple of 5
max_clients
integer
prior_notice
integer
after_notice
integer
cancel_appointment
integer
reschedule_appointment
integer
send_reminder
integer
start_step
integer multiple of 5
set_schedule
integer
price
integer
payment_min_amount
number
allow_cash_payment
boolean
group_session
integer
waiting_list
integer
client_instructions
string
widget_message
string
password
string
active_from
string <date-time>
active_until
string <date-time>
active_interval_status
boolean
status
boolean
photo
string
active_rules
boolean
tmp_default
boolean

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN&id=ID&location_id=LOCATION_ID&active_services=ACTIVE_SERVICES&description=DESCRIPTION&auto_confirm=AUTO_CONFIRM&is_subservice=IS_SUBSERVICE&duration=DURATION&duration_padding=DURATION_PADDING&max_clients=MAX_CLIENTS&prior_notice=PRIOR_NOTICE&after_notice=AFTER_NOTICE&cancel_appointment=CANCEL_APPOINTMENT&reschedule_appointment=RESCHEDULE_APPOINTMENT&send_reminder=SEND_REMINDER&start_step=START_STEP&set_schedule=SET_SCHEDULE&price=PRICE&payment_min_amount=PAYMENT_MIN_AMOUNT&allow_cash_payment=ALLOW_CASH_PAYMENT&group_session=GROUP_SESSION&waiting_list=WAITING_LIST&client_instructions=CLIENT_INSTRUCTIONS&widget_message=WIDGET_MESSAGE&password=PASSWORD&active_from=ACTIVE_FROM&active_until=ACTIVE_UNTIL&active_interval_status=ACTIVE_INTERVAL_STATUS&status=STATUS&photo=PHOTO&active_rules=ACTIVE_RULES&tmp_default=TMP_DEFAULT'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Create a Service

Create a new service.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "5678"

The ID of the company that the service belongs to. Field is writable when entity is owned by child account

name
required
string
Example: "Default service"

The name of the service

duration
required
integer <int32> multiple of 15
Default: 60

The duration of the service in minutes

description
string
Example: "This service should be used in testing only"

The description of the service

auto_confirm
boolean
Default: false

If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.

is_subservice
boolean
Default: false

If true (1) the service will be an additional service, otherwise it will be a base service.

require_addon
integer
Default: 0
Enum: 0 1

If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons. Uses global default from widget_settings unless service has active_rules=1.

duration_padding
integer <int32> multiple of 5
Default: 0

The minimum number of minutes between two adjacent appointments

max_clients
integer
Default: 0
prior_notice
integer
Default: 0

The minimum number of hours the appointment has to be scheduled before the scheduled time

after_notice
integer
Default: 0

The maximum number of days the appointment has to be scheduled after the scheduled time

cancel_appointment
integer
Default: 0

The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.

reschedule_appointment
integer
Default: 0

The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.

send_reminder
integer
Default: 0

The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.

start_step
integer multiple of 5
Default: 0

Number of minutes. If this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone. If the value of the field is 0, then the clients can select only predefined time slots for the appointments.

set_schedule
boolean
Default: false

If true the service can only be performed on the schedule times. If true, availability can be added to the service through the schedule field

Array of objects

The service can only be performed on the following times. The set_schedule needs to be set to true for this field to be considered.

Array of objects
Example: "[object Object]"

Links with locations and employees. The links property may contain more than one of the above structures: {"[EMPLOYEE_ID]" : {"[LOCATION_ID]":1}}

price
number <float>
Default: 0

The price of the service

payment_min_amount
number <double>
Default: 0

The minimum amount required for the payment to be valid

allow_cash_payment
boolean
Default: false

Whether or not to allow the client to skip the online payment and pay with cash

group_session
integer
Default: 0

The number of appointments that can be scheduled in the same time slot.

waiting_list
integer
Default: 0
client_instructions
string

The message sent to the client in the confirmation email (after the client verifies his/her email address)

widget_message
string

The message displayed on the widget after the client books an appointments

password
string
active_from
string or null <date>

The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.

To set the field to null, set it to the empty string when updating the service.

active_until
string or null <date>

The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.

To set the field to null, set it to the empty string when updating the service.

active_interval_status
boolean
Default: true
status
boolean
Default: true

If 0 the service will not appear on the widget.

active_rules
integer
Default: 1
photo
string

Responses

Request samples

Content type
application/json
{
  • "name": "Default service",
  • "company_id": 5678,
  • "duration": 60,
  • "description": "This service should be used in testing only",
  • "auto_confirm": false,
  • "is_subservice": false,
  • "require_addon": 0,
  • "duration_padding": 0,
  • "max_clients": 0,
  • "prior_notice": 0,
  • "after_notice": 0,
  • "cancel_appointment": 0,
  • "reschedule_appointment": 0,
  • "send_reminder": 0,
  • "start_step": 0,
  • "set_schedule": false,
  • "schedule": [
    • {
      }
    ],
  • "links": {
    • "13367": {
      }
    },
  • "price": 0,
  • "payment_min_amount": 0,
  • "allow_cash_payment": false,
  • "group_session": 0,
  • "waiting_list": 0,
  • "client_instructions": "string",
  • "widget_message": "string",
  • "password": "string",
  • "active_from": "2019-08-24",
  • "active_until": "2019-08-24",
  • "active_interval_status": true,
  • "status": true,
  • "active_rules": 1,
  • "photo": "string"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 1234,
    • "name": "Default service",
    • "company_id": 5678,
    • "duration": 60,
    • "description": "This service should be used in testing only",
    • "auto_confirm": false,
    • "is_subservice": false,
    • "require_addon": 0,
    • "duration_padding": 0,
    • "max_clients": 0,
    • "prior_notice": 0,
    • "after_notice": 0,
    • "cancel_appointment": 0,
    • "reschedule_appointment": 0,
    • "send_reminder": 0,
    • "start_step": 0,
    • "set_schedule": false,
    • "schedule": [
      ],
    • "price": 0,
    • "payment_min_amount": 0,
    • "allow_cash_payment": false,
    • "group_session": 0,
    • "waiting_list": 0,
    • "client_instructions": "string",
    • "widget_message": "string",
    • "password": "string",
    • "ord": 0,
    • "created_at": "2019-08-24T14:15:22Z",
    • "active_from": "2019-08-24",
    • "active_until": "2019-08-24",
    • "active_interval_status": true,
    • "status": true,
    • "active_rules": 1,
    • "photo": "string"
    }
}

Get a Service

Get the attributes of a specific service.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Service id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify a Service

Modify the attributes of an existing service.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Service id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "5678"

The ID of the company that the service belongs to. Field is writable when entity is owned by child account

name
required
string
Example: "Default service"

The name of the service

duration
required
integer <int32> multiple of 15
Default: 60

The duration of the service in minutes

description
string
Example: "This service should be used in testing only"

The description of the service

auto_confirm
boolean
Default: false

If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.

is_subservice
boolean
Default: false

If true (1) the service will be an additional service, otherwise it will be a base service.

require_addon
integer
Default: 0
Enum: 0 1

If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons. Uses global default from widget_settings unless service has active_rules=1.

duration_padding
integer <int32> multiple of 5
Default: 0

The minimum number of minutes between two adjacent appointments

max_clients
integer
Default: 0
prior_notice
integer
Default: 0

The minimum number of hours the appointment has to be scheduled before the scheduled time

after_notice
integer
Default: 0

The maximum number of days the appointment has to be scheduled after the scheduled time

cancel_appointment
integer
Default: 0

The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.

reschedule_appointment
integer
Default: 0

The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.

send_reminder
integer
Default: 0

The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.

start_step
integer multiple of 5
Default: 0

Number of minutes. If this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone. If the value of the field is 0, then the clients can select only predefined time slots for the appointments.

set_schedule
boolean
Default: false

If true the service can only be performed on the schedule times. If true, availability can be added to the service through the schedule field

Array of objects

The service can only be performed on the following times. The set_schedule needs to be set to true for this field to be considered.

Array of objects
Example: "[object Object]"

Links with locations and employees. The links property may contain more than one of the above structures: {"[EMPLOYEE_ID]" : {"[LOCATION_ID]":1}}

price
number <float>
Default: 0

The price of the service

payment_min_amount
number <double>
Default: 0

The minimum amount required for the payment to be valid

allow_cash_payment
boolean
Default: false

Whether or not to allow the client to skip the online payment and pay with cash

group_session
integer
Default: 0

The number of appointments that can be scheduled in the same time slot.

waiting_list
integer
Default: 0
client_instructions
string

The message sent to the client in the confirmation email (after the client verifies his/her email address)

widget_message
string

The message displayed on the widget after the client books an appointments

password
string
active_from
string or null <date>

The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.

To set the field to null, set it to the empty string when updating the service.

active_until
string or null <date>

The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.

To set the field to null, set it to the empty string when updating the service.

active_interval_status
boolean
Default: true
status
boolean
Default: true

If 0 the service will not appear on the widget.

active_rules
integer
Default: 1
photo
string

Responses

Request samples

Content type
application/json
{
  • "name": "Default service",
  • "company_id": 5678,
  • "duration": 60,
  • "description": "This service should be used in testing only",
  • "auto_confirm": false,
  • "is_subservice": false,
  • "require_addon": 0,
  • "duration_padding": 0,
  • "max_clients": 0,
  • "prior_notice": 0,
  • "after_notice": 0,
  • "cancel_appointment": 0,
  • "reschedule_appointment": 0,
  • "send_reminder": 0,
  • "start_step": 0,
  • "set_schedule": false,
  • "schedule": [
    • {
      }
    ],
  • "links": {
    • "13367": {
      }
    },
  • "price": 0,
  • "payment_min_amount": 0,
  • "allow_cash_payment": false,
  • "group_session": 0,
  • "waiting_list": 0,
  • "client_instructions": "string",
  • "widget_message": "string",
  • "password": "string",
  • "active_from": "2019-08-24",
  • "active_until": "2019-08-24",
  • "active_interval_status": true,
  • "status": true,
  • "active_rules": 1,
  • "photo": "string"
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 1234,
    • "name": "Default service",
    • "company_id": 5678,
    • "duration": 60,
    • "description": "This service should be used in testing only",
    • "auto_confirm": false,
    • "is_subservice": false,
    • "require_addon": 0,
    • "duration_padding": 0,
    • "max_clients": 0,
    • "prior_notice": 0,
    • "after_notice": 0,
    • "cancel_appointment": 0,
    • "reschedule_appointment": 0,
    • "send_reminder": 0,
    • "start_step": 0,
    • "set_schedule": false,
    • "schedule": [
      ],
    • "price": 0,
    • "payment_min_amount": 0,
    • "allow_cash_payment": false,
    • "group_session": 0,
    • "waiting_list": 0,
    • "client_instructions": "string",
    • "widget_message": "string",
    • "password": "string",
    • "ord": 0,
    • "created_at": "2019-08-24T14:15:22Z",
    • "active_from": "2019-08-24",
    • "active_until": "2019-08-24",
    • "active_interval_status": true,
    • "status": true,
    • "active_rules": 1,
    • "photo": "string"
    }
}

Delete a Service

Delete an existing service.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

Service id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request DELETE 'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}

Upload a Service Photo

Add or update the image of a specific service.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

service
integer <int64>

Service id

Request Body schema: multipart/form-data
photo
string <binary>

Responses

Request samples

curl --location --request POST 'https://www.setster.com/api/v2/service/uploadPhoto?session_token=SESSION_TOKEN&service=SERVICE'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "upload_id": 32412,
    • "file_name": "avatar.png",
    • "file_location": "/admin/images/clients/"
    }
}

Delete a Service Photo

Delete the image of a specific service.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

service
integer <int64>

Service id

Request Body schema: application/json
file_name
required
string
service
integer
Example: "2342"

Service Id

Responses

Request samples

Content type
application/json
{
  • "file_name": "string",
  • "service": 2342
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Update Services Sort Order

Change the sort order of the services in the list.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
Array
id
required
integer
Example: "27864"

Service id

ord
required
integer
Example: "3"

The order number in the list

Responses

Request samples

Content type
application/json
[
  • {
    • "id": 27864,
    • "ord": 3
    }
]

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": null
}

Time Zones

Setster saves each appointment with a timezone that is correlated to an internal Setster timezone ID. When creating an appointment, you can specify the timezone ID (client's time zone or location time zone), and the API response will include the timezone ID, timezone details, and the offset in seconds.

List Time Zones

Get a list of available Setster time zones.

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

reverse_caption
integer
Default: 0

Get the caption with a different format

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/tz/list?session_token=SESSION_TOKEN&reverse_caption=REVERSE_CAPTION'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "property1": {
      },
    • "property2": {
      }
    }
}

Get Time Zone Offset

Get the offset of a specific time zone.

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

id
integer
Default: 553

The timezone id

time
integer
Default: 1536583485

The timestamp at which the offset whould be calculated

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/tz/data?session_token=SESSION_TOKEN&id=ID&time=TIME'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "name": {
      }
    }
}

Webhooks

Webhooks Receive notifications with webhooks Setster offers webhooks to notify your application when an event happens within your account. Webhooks are especially useful for asynchronous events and building workflows within your application. For example, a new appointment is created and triggers a set of customer communications within your application.

List Webhooks

Get a list of created webhooks and their attributes.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

target_url
string <uri>
active
integer
Enum: 0 1
verification_key
string
created_at
string <date-time>
updated_at
string <date-time>

Responses

Request samples

curl --location --request GET 'https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN&target_url=TARGET_URL&active=ACTIVE&verification_key=VERIFICATION_KEY&created_at=CREATED_AT&updated_at=UPDATED_AT'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Create a Webhook

Create a new webhook.

Authorizations:
session_token
query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "24232"

The ID of the company

target_url
required
string <uri>
Default: ""
Array of strings or objects
Example: "appointment.created,[object Object]"

The list of events. The currently supported events are:

  1. appointment.created
  2. appointment.updated
  3. appointment.deleted
  4. appointment.rescheduled
  5. appointment.reminder
  6. appointment.canceled
  7. *

The "*" event means that you will subscribe to all currently supported events as well as future added events.

active
integer
Default: 1
Enum: 0 1

Responses

Request samples

Content type
application/json
{
  • "company_id": 24232,
  • "target_url": "",
  • "events": [
    • "appointment.created",
    • {
      }
    ],
  • "active": 0
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 13425,
    • "company_id": 24232,
    • "target_url": "",
    • "events": [
      ],
    • "active": 0,
    • "verification_key": "string",
    • "created_at": "2019-08-24T14:15:22Z",
    • "updated_at": "2019-08-24T14:15:22Z"
    }
}

Get a Webhook

Get the attributes of a specific webhook.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

WebHook id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request GET 'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": [
    • {
      }
    ]
}

Modify a Webhook

Modify the attributes for an existing webhook.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

WebHook id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Request Body schema: application/json
company_id
required
integer <int64>
Example: "24232"

The ID of the company

target_url
required
string <uri>
Default: ""
Array of strings or objects
Example: "appointment.created,[object Object]"

The list of events. The currently supported events are:

  1. appointment.created
  2. appointment.updated
  3. appointment.deleted
  4. appointment.rescheduled
  5. appointment.reminder
  6. appointment.canceled
  7. *

The "*" event means that you will subscribe to all currently supported events as well as future added events.

active
integer
Default: 1
Enum: 0 1

Responses

Request samples

Content type
application/json
{
  • "company_id": 24232,
  • "target_url": "",
  • "events": [
    • "appointment.created",
    • {
      }
    ],
  • "active": 0
}

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": {
    • "id": 13425,
    • "company_id": 24232,
    • "target_url": "",
    • "events": [
      ],
    • "active": 0,
    • "verification_key": "string",
    • "created_at": "2019-08-24T14:15:22Z",
    • "updated_at": "2019-08-24T14:15:22Z"
    }
}

Delete a Webhook

Delete an existing webhook.

Authorizations:
session_token
path Parameters
id
required
integer <int64>

WebHook id

query Parameters
company_id
required
integer <int64>
Example: company_id=2345

The unique ID of the account. Account ID.

Responses

Request samples

curl --location -g --request DELETE 'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID'

Response samples

Content type
application/json
{
  • "statusCode": 0,
  • "statusDescriptions": "OK",
  • "data": { }
}