Cliniko API (v1)

This is the official API for Cliniko. Cliniko is a practice management system for healthcare practitioners.

The Cliniko API is based on REST principles. This means you can use any HTTP client and any programming language to interact with the API.

JSON will be returned in all responses from the API.

Download OpenAPI description
Languages
Servers
Production
https://api.au1.cliniko.com/v1/

Appointment Type

Operations

Appointment Type Billable Item

Operations

Appointment Type Product

Operations

Attendee

Operations

Availability Block

Operations

Available Time

Cliniko users can configure how available times are displayed in our online bookings module.

The API endpoints that retrieve available times will respect these settings. The settings are:

Maximum number of appointments per day segment

Day parts are morning (before Midday), afternoon (Midday to 5pm) and evening (5pm onwards).

Possible settings are: 1, 2, 3, 4, 5 or unlimited.

Minimum advance time required for online bookings

This is the minimum amount of time from now that a available time will be shown.

Possible settings are: Now, 1 Hour, 2 Hours, 4 Hours, Tomorrow or 2 Days.

How far ahead bookings are offered

This limits how far in the future available times are offered.

Possible settings are: 28 days, 84 days, 182 days or 365 days

Business to be displayed in online bookings

Setting to choose which businesses can be displayed in our online bookings module.

The API will not return available times for businesses not enabled for online bookings.

Appointment Type to be displayed in online bookings

Setting to choose which appointment types can be displayed in our online bookings module.

The API will not return available times for appointment types not enabled for online bookings.

Practitioner to be displayed in online bookings

Setting to choose which practitioners can be displayed in our online bookings module.

The API will not return available times for practitioners not enabled for online bookings.

Operations

Billable Item

Operations

Booking

Operations

Business

Businesses represent a business or location (e.g. a clinic). Each Cliniko account can have unlimited businesses.

These are typically used for each physical location if there is more than one. Most Cliniko accounts have just one business.

Operations

Communication

Operations

Concession Price

Operations

Concession Type

Operations

Contact

Operations

Daily Availability

The regularly scheduled availabilities of a practitioner at a business

Operations

Group Appointment

Operations

Individual Appointment

Operations

Invoice

Operations

Invoice Item

Operations

Medical Alert

Operations

Patient

Patients are the people that book in for appointments. There isn't much in Cliniko that doesn't revolve around patients.

When you're working with patient information, make sure you abide by the relevant regulations for security and privacy.

A couple of fields in the patient record deserve special consideration:

accepted_privacy_policy stores the patient's consent to the business's own privacy policy. Values can be null (no response), true (accepted) or false (rejected). Please consider how this may affect you storing information on this patient.

time_zone will contain a valid IANA time zone identifier if the patient's time zone has been set, or null if it hasn't. It can be set via the API, in which case it accepts IANA time zone identifiers.

Operations

Patient Attachment

Operations

Patient Case

Operations

Patient Form

HTML is supported in answers to paragraph questions. We sanitize these answers to ensure the HTML is safe and our editor can support the formatting.

Currently, the following tags are supported: p, div, br, ul, ol, li, blockquote, h1, h2, b, i, u, and a.

The angle bracket characters (<, and >) should be sent as html encodings (ex: < should be sent as &lt;).

Content inside unescaped angle brackets could be indentified as unsupported HTML and will be stripped.

Operations

Patient Form Template

Operations

Practitioner

All practitioners have an associated user account. Not all users are practitioners (e.g. receptionists wouldn't be).

You can only create appointments for practitioners (not for users).

Operations

Practitioner

activeboolean or null
appointment_typesobject
appointmentsobject
created_atstring(date-time)
default_appointment_typeobject
descriptionstring or null
designationstring or null
display_namestring or null
first_namestring or null
idstring(int64)
invoicesobject
labelstring or null
last_namestring or null
linksobject
practitioner_reference_numbersobject
show_in_online_bookingsboolean or null
titlestring or null
updated_atstring(date-time)
userobject
{ "active": true, "appointment_types": { "links": { "self": "https://api.au1.cliniko.com/v1/appointment_types?q%5B%5D=practitioner_id%3A%3D1" } }, "appointments": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1/appointments" } }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": { "self": "https://api.au1.cliniko.com/v1/appointment_types/1" } }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1/invoices" } }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1/practitioner_reference_numbers" } }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": { "self": "https://api.au1.cliniko.com/v1/users/1" } } }

List practitioners

Request

Query
pageinteger
per_pageinteger[ 1 .. 100 ]
sortArray of strings

Comma separated search fields. See: Ordering

Example: sort=created_at:desc
q[]Array of strings
orderstringDeprecated
Enum"asc""desc"
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/practitioners?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
practitionersArray of objects(Practitioner)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "practitioners": [ { "active": true, "appointment_types": { "links": {} }, "appointments": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": {} }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": {} }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": {} }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": {} } } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/practitioners?page=2", "previous": "https://api.au1.cliniko.com/v1/practitioners?page=1", "next": "https://api.au1.cliniko.com/v1/practitioners?page=3" } }

List inactive practitioners

Request

Query
pageinteger
per_pageinteger[ 1 .. 100 ]
sortArray of strings

Comma separated search fields. See: Ordering

Example: sort=created_at:desc
q[]Array of strings
orderstringDeprecated
Enum"asc""desc"
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/practitioners/inactive?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
practitionersArray of objects(Practitioner)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "practitioners": [ { "active": true, "appointment_types": { "links": {} }, "appointments": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": {} }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": {} }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": {} }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": {} } } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/inactive?page=2", "previous": "https://api.au1.cliniko.com/v1/practitioners/inactive?page=1", "next": "https://api.au1.cliniko.com/v1/practitioners/inactive?page=3" } }

Get practitioner

Request

Path
idstring(int64)required
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/practitioners/{id}'

Responses

Successful operation

Bodyapplication/json
activeboolean or null
appointment_typesobject
appointmentsobject
created_atstring(date-time)
default_appointment_typeobject
descriptionstring or null
designationstring or null
display_namestring or null
first_namestring or null
idstring(int64)
invoicesobject
labelstring or null
last_namestring or null
linksobject
practitioner_reference_numbersobject
show_in_online_bookingsboolean or null
titlestring or null
updated_atstring(date-time)
userobject
Response
application/json
{ "active": true, "appointment_types": { "links": { "self": "https://api.au1.cliniko.com/v1/appointment_types?q%5B%5D=practitioner_id%3A%3D1" } }, "appointments": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1/appointments" } }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": { "self": "https://api.au1.cliniko.com/v1/appointment_types/1" } }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1/invoices" } }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1/practitioner_reference_numbers" } }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": { "self": "https://api.au1.cliniko.com/v1/users/1" } } }

List practitioners for appointment type

Request

Path
appointment_type_idstring(int64)required
Query
pageinteger
per_pageinteger[ 1 .. 100 ]
sortArray of strings

Comma separated search fields. See: Ordering

Example: sort=created_at:desc
q[]Array of strings
orderstringDeprecated
Enum"asc""desc"
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/appointment_types/{appointment_type_id}/practitioners?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
practitionersArray of objects(Practitioner)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "practitioners": [ { "active": true, "appointment_types": { "links": {} }, "appointments": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": {} }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": {} }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": {} }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": {} } } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/appointment_types/1/practitioners?page=2", "previous": "https://api.au1.cliniko.com/v1/appointment_types/1/practitioners?page=1", "next": "https://api.au1.cliniko.com/v1/appointment_types/1/practitioners?page=3" } }

List practitioners for business

Request

Path
business_idstring(int64)required
Query
pageinteger
per_pageinteger[ 1 .. 100 ]
sortArray of strings

Comma separated search fields. See: Ordering

Example: sort=created_at:desc
q[]Array of strings
orderstringDeprecated
Enum"asc""desc"
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/businesses/{business_id}/practitioners?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
practitionersArray of objects(Practitioner)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "practitioners": [ { "active": true, "appointment_types": { "links": {} }, "appointments": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": {} }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": {} }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": {} }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": {} } } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/businesses/1/practitioners?page=2", "previous": "https://api.au1.cliniko.com/v1/businesses/1/practitioners?page=1", "next": "https://api.au1.cliniko.com/v1/businesses/1/practitioners?page=3" } }

List inactive practitioners for appointment type

Request

Path
appointment_type_idstring(int64)required
Query
pageinteger
per_pageinteger[ 1 .. 100 ]
sortArray of strings

Comma separated search fields. See: Ordering

Example: sort=created_at:desc
q[]Array of strings
orderstringDeprecated
Enum"asc""desc"
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/appointment_types/{appointment_type_id}/practitioners/inactive?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
practitionersArray of objects(Practitioner)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "practitioners": [ { "active": true, "appointment_types": { "links": {} }, "appointments": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": {} }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": {} }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": {} }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": {} } } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/appointment_types/1/practitioners/inactive?page=2", "previous": "https://api.au1.cliniko.com/v1/appointment_types/1/practitioners/inactive?page=1", "next": "https://api.au1.cliniko.com/v1/appointment_types/1/practitioners/inactive?page=3" } }

List inactive practitioners for business

Request

Path
business_idstring(int64)required
Query
pageinteger
per_pageinteger[ 1 .. 100 ]
sortArray of strings

Comma separated search fields. See: Ordering

Example: sort=created_at:desc
q[]Array of strings
orderstringDeprecated
Enum"asc""desc"
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/businesses/{business_id}/practitioners/inactive?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
practitionersArray of objects(Practitioner)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "practitioners": [ { "active": true, "appointment_types": { "links": {} }, "appointments": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "default_appointment_type": { "links": {} }, "description": "string", "designation": "string", "display_name": "string", "first_name": "string", "id": "string", "invoices": { "links": {} }, "label": "string", "last_name": "string", "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" }, "practitioner_reference_numbers": { "links": {} }, "show_in_online_bookings": true, "title": "string", "updated_at": "2019-08-24T14:15:22Z", "user": { "links": {} } } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/businesses/1/practitioners/inactive?page=2", "previous": "https://api.au1.cliniko.com/v1/businesses/1/practitioners/inactive?page=1", "next": "https://api.au1.cliniko.com/v1/businesses/1/practitioners/inactive?page=3" } }

Practitioner Reference Number

Operations

Product

Operations

Product Supplier

Operations

Public Settings

Operations

Referral Source

Referral source of a patient

Operations

Referral Source Type

Types of referrals for patients

Operations

Relationship

Operations

Service

Operations

Settings

Operations

Signature

Operations

Stock Adjustment

Operations

Tax

Operations

Treatment Note

Notes taken about a patient visit.

HTML is supported in answers to paragraph questions. We sanitize these answers to ensure the HTML is safe and our editor can support the formatting.

Currently, the following tags are supported: p, div, br, ul, ol, li, blockquote, h1, h2, b, i, u, and a.

The angle bracket characters (<, and >) should be sent as html encodings (ex: < should be sent as &lt;).

Content inside unescaped angle brackets could be indentified as unsupported HTML and will be stripped.

Operations

Treatment Note Template

Templates that are the starting point for treatment notes.

HTML is supported in answers to paragraph questions. We sanitize these answers to ensure the HTML is safe and our editor can support the formatting.

Currently, the following tags are supported: p, div, br, ul, ol, li, blockquote, h1, h2, b, i, u, and a.

The angle bracket characters (<, and >) should be sent as html encodings (ex: < should be sent as &lt;).

Content inside unescaped angle brackets could be indentified as unsupported HTML and will be stripped.

Operations

Unavailable Block

Operations

User

Operations