Get to know the ChiDesk API

Use our API to retrieve information from the ChiDesk platform and use it to develop a variety of applications on any platform.

Introduction to our API

The ChiDesk API is a modern REST based API that grants access to ChiDesk client databases. All data is returned in a standard JSON format, which allows your developers to utilise this information on whatever platform it is needed.

Developers can access information such as appointment availability, class schedules, prices and other details. They can use this information to create a variety of applications for your business.

API Endpoints

All API URLs listed in this documentation are client account specific, and relative to https://[account].chidesk.com/api/. For example, the /services API call is reachable at https://[account].chidesk.com/api/services

Security and Authentication

All calls to our API require HTTPS and must include a custom header key named ChiDeskApiKey with it's value containing a generated API Key from the clients instance of ChiDesk.

Conventions

    All date or time values and parameters are in UTC.
    Date and time format should follow yyyy-MM-dd hh:mm.
    For new items use an empty guid for any primary keys eg. 00000000-0000-0000-0000-000000000000.

Rate Limiting

To guarantee performance for all users calls are limited to a maximum of 8 per second, after which requests will fail with an HTTP status 429 - Too Many Requests.

Available methods

Appointments

GET /appointments

List appointments for a given date range

Parameters
SiteId Guid The site to list appointments from
StateId Guid Filter appointments by a specific state. Use an empty Guid for all active appointments
Start DateTime Start date
End DateTime End date
Find String Filter results based on client or service name
ClientId Guid Fitler results to a specific client

POST /appointments/availableTimes

List available start times for a given service

Parameters
SiteId Guid The site to list appointments from
Day DateTime Date
Services Guid array Find start times for a selection of Services
PackageId Guid Find start times for a specific Package
EmployeeIds Guid array Find start times for a specific Employee
ClientId Guid Find start times for a specific Client
CartItems Array of AppointmentService objects An array of existing AppointmentService objects that form part of a cart
ServiceSequence Byte Sequential = 1, Same Start Time = 2

POST /appointments/validate

Validate a cart of items to ensure they are still available. Use this before posting a new appointment.

Parameters
SiteId Guid The site for this appointment
CartItems Array of AppointmentService objects An array of existing AppointmentService objects that form part of a cart

GET /appointments

Fetch an existing appointment

Parameters
AppointmentId Guid The appointment to fetch

POST /appointments

Create a new appointment

Parameters
SiteId Guid The site this appointment belongs to
Appointment Appointment An appointment object containing details of the new appointment

PUT /appointments

Update an existing appointment

Parameters
AppointmentId Guid The appointment to update
Appointment Appointment An appointment object containing details of the updated appointment

POST /appointments/SetState

Update an existing appointment state

Parameters
AppointmentId Guid The appointment to update
AppointmentStateId Guid The appointment state to use

Classes

GET /classes/classschedules

List classes for a given date range

Parameters
SiteId Guid The site to list appointments from
ClassType byte All = 0, Class = 1, Event = 2
Start DateTime Start date
End DateTime End date
Find String Filter results based on client or service name
EmployeeId Guid Filter classes to a specific employee
BookOnline Boolean Only return classes that can be booked online

GET /classbookings

List all class bookings for a given date range

Parameters
SiteId Guid The site to list appointments from
Start DateTime Start date
End DateTime End date

POST /classbookings

Create a new class booking

Parameters
ClassBooking ClassBooking A class booking object containing details of the new class booking

PUT /classbookings

Update an existing class booking

Parameters
ClassBookingId Guid The class booking to update
ClassBooking ClassBooking A class booking object containing details of the class booking

Clients

GET /clients

List clients

Parameters
SiteId Guid The site to list appointments from
ItemState Byte Client state. Active = 1, Inactive = 2
Find String Filter results based on client or service name
CreationDate Date Filter results based on client creation date

GET /clients

Fetch a client

Parameters
Id Guid The client to fetch

GET /clients/emailexists

Checks if a client with the specified email exists

Parameters
SiteId Guid The site the client is assigned to
Email String The email address to search for

GET /clients/mobileexists

Checks if a client with the specified mobile number exists

Parameters
SiteId Guid The site the client is assigned to
Mobile String The mobile number to search for

GET /clients/appointmenthistory

List a history of appointments the client has booked

Parameters
ClientId Guid The client to list appointments history for
SiteId Guid The site to list appointments from
Start DateTime Start date
End DateTime End date

POST /clients

Create a new client

Parameters
Client Client A client object containing details of the new client

PUT /clients

Update an existing client

Parameters
ClientId Guid The client to update
Client Client A client object containing details of the client

GET /clients/authenticate

Check if the email and password for a client are valid

Parameters
ClientId Guid The id of the client retrieved using the EmailExists end-point
Email String The email address to check
Password String The plain-text password to check

Courses

GET /courses

List courses

Parameters
SiteId Guid The site to list courses from
ItemState Byte Course state. Active = 1, Inactive = 2
Find String Filter results based on course name

Custom Forms

GET /clientcustomforms

List client custom form data

Parameters
SiteId Guid The site to list data from
Start DateTime Start date
End DateTime End date

Employees

GET /employees

List employees

Parameters
SiteId Guid The site to list employees from
ItemState Byte Employee state. Active = 1, Inactive = 2
Find String Filter results based on employee name

GET /employees/schedules

List employee schedules

Parameters
SiteId Guid The site to list from
Start DateTime Start date
End DateTime End date

Memberships

GET /memberships

List memberships

Parameters
SiteId Guid The site to list memberships from
ItemState Byte Membership state. Active = 1, Inactive = 2
Find String Filter results based on membership name

Products

GET /products

List products

Parameters
SiteId Guid The site to list products from
ItemState Byte Product state. Active = 1, Inactive = 2
Find String Filter results based on product name
AllowSale Boolean Only show products marked as sellable

Receipts

GET /accountingentries

List receipts or payments

Parameters
SiteId Guid The site to list from
EntryType Byte Type of entry. Receipt = 1, Payment = 2
Start DateTime Start date
End DateTime End date
Find String Filter results based on entry number, client name or document number

POST /accountingentries

Create a new receipt or payment

Parameters
SiteId Guid The site you are creating the receipt for
AccountingEntry AccountingEntry An AccountingEntry object

PUT /accountingentries

Update an existing receipt or payment

Parameters
AccountingEntryId Guid The entry you are updating
AccountingEntry AccountingEntry An AccountingEntry object

Reports

GET /reports/sales

List all sales that took place over a given date range

Parameters
SiteId Guid Pass a null value for all sites
Start DateTime Start date
End DateTime End date

Sales

GET /accountingdocuments

List accounting documents

Parameters
SiteId Guid The site to list documents from
ClientDocuments Boolean Filter to Client or Supplier documents
Start DateTime Start date
End DateTime End date
Find String Filter results based on document number or client name

GET /accountingdocuments

Fetch a specific accounting document

Parameters
AccountingDocumentId Guid The document to fetch

Services

GET /services

List services

Parameters
SiteId Guid The site to list services from
ItemState Byte Service state. Active = 1, Inactive = 2
Find String Filter results based on service name
ShowPackageServices Boolean Show services that are marked as package services only

Sites

GET /sites

List sites

Time Records

GET /timerecords

List time records for a given date range

Parameters
SiteId Guid The site to list time records from
Start DateTime Start date
End DateTime End date
Find String Filter results

Vouchers

GET /vouchers

List vouchers

Parameters
SiteId Guid The site to list from
ItemState Byte Client state. Active = 1, Inactive = 2
Find String Filter results based on entry number, client name or document number

POST /vouchers

Create a new voucher

Parameters
SiteId Guid The site you are creating the voucher for
Voucher Voucher A Voucher object

PUT /vouchers

Update an existing voucher

Parameters
VoucherId Guid The voucher you are updating
Voucher Voucher A Voucher object

Objects

Client

ClientId Guid
SiteId Guid The site the client belongs to
State Byte Active = 1, Inactive = 2
FirstName String First name
LastName String Last name
Email String Email address
MobilePhone String Mobile phone number
Gender Byte Female = 1, Male = 2
MembershipId Guid The membership the client belongs to
AccountPassword String A plain-text password for their members area access.
NewAccountPassword String A new plain-text password for their members area access.
MembershipStart DateTime Membership start date
MembershipEnd DateTime Membership end date
PhysicalAddress Address Object
BillingAddress Address Object
PostalAddress Address Object
ClientNotes Array of Client Notes A list of Client Notes attached to this Client

Client Note

ClientNoteId Guid
ClientId Guid
ClientNoteType Byte General = 1, Appointment = 2, Invoice = 3, Medical = 4
Body String
Category String
ObjectState Byte Unchanged = 0, Created = 1, Updated = 2, Deleted = 3

Address

Street String
City String
State String
Code String
Country String

Appointment

AppointmentId Guid
SiteId Guid The site the client belongs to
ClientId Guid The client this appointment belongs to
ClientTypeId Guid The client type for this appointment
AppointmentNumber String Unique friendly reference for the appointment
AppointmentStateId Guid The state of the appointment
Notes String
SourceId Guid The source of this appointment
UserId Guid The user who created this appointment
VIP Boolean Mark this appointment very important
SeriesId Guid A unique identifier that links copied appointments together
AppointmentServices Array of Appointment Services A list of Appointment Services that make up this appointment

Appointment Service

AppointmentServiceId Guid
AppointmentId Guid
ClientId Guid The client this service is being performed for
ServiceId Guid The service being performed
PackageId Guid The package this service belongs to
PackageGroupId Guid Links all services of a specific package together
Start DateTime The start time of the service
End DateTime The end time of the service
Description String Name of the service or custom item
Employees Array of Appointment Service Employees A list of Employees performing this service
Resources Array of Appointment Service Resources A list of Resources being used to perform this service

Appointment Service Employee

EmployeeId Guid
FirstName String Required
LastName String Required

Appointment Service Resource

ResourceId Guid
Name String Required

Class Booking

ClassBookingId Guid A unique identifier for this booking
ClassScheduleId Guid The class scheduled for this booking
ClientId Guid The client of this booking
OnlineBooking Boolean Indicates if this is an online booking or manual booking
ClassBookingState Byte Booked = 1, CheckedIn = 2, NoShow = 3, LateCancelled = 4, Cancelled = 5

Accounting Entry

AccountingEntryId Guid Required
SiteId Guid Required
ClientId Guid Required for receipts
SupplierId Guid Required for payments
EntryNumber String Leave empty for auto-generation
Reference String
Description String
EntryDate DateTime
AccountingEntryTypeId Byte Receipt = 1, Payment = 2
AccountingDocumentId Guid Optional link to invoice
AmountDue Decimal Required
Received Decimal Required
Gratuity Decimal Required
Change Decimal Required
Total Decimal Required
PaymentTypeId Guid Required
VoucherId Guid Optional link to used Voucher
UserId Guid
CashDrawerId Guid Required
Gratuities Array of AccountingEntryGratuity objects Specify which employees receive the gratuity specified

Accounting Entry Gratuity

AccountingEntryId Guid Required
EmployeeId Guid Required

Voucher

VoucherId Guid Required
SiteId Guid Leave empty for a shared voucher
State Byte Voucher state. Active = 1, Inactive = 2
VoucherType Byte Voucher = 1, Gift Card = 2
VoucherNumber String Leave empty for auto-generation
ExpiryDate DateTime Required
DeliveryDate DateTime Optional
ActivationDate DateTime Optional
AccountingEntryTypeId Byte Receipt = 1, Payment = 2
ClientId Guid Optional link to client
SourceId Guid Optional link to source
CreatedSiteId Guid Optional link to site on which voucher was created
Description String
Recipient String
RecipientEmail String
RecipientMessage String
Template Byte General = 0, Birthday = 1, WithLove = 2, ThankYou = 3, Congratulations = 4
Notes String
BarCode String
Category String
From String
Amount Decimal Required

Error messages and troubleshooting

No HTTP resource was found that matches the request URI

Make sure you are passing through all parameters to the function, even empty ones. For example:
/api/Appointments/AvailableTimes?SiteId=c231e3aa-a317-4321-88ef-fe989356babc&Day=2020-07-08&Services[0]=99677d88-3ed2-4b47-a222-0389adb808ce&PackageId=&ClientId=&CartItems&ServiceSequence=1