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

appointmentobject
archived_atstring or null(date-time)
attendeeobject
businessobject
closed_atstring or null(date-time)
created_atstring(date-time)
deleted_atstring or null(date-time)
discounted_amountstring or null(decimal)
idstring(int64)
invoice_itemsobject
invoice_tostring or null
issue_datestring(date)
linksobject
net_amountstring or null(decimal)
notesstring or null
numberinteger
online_payment_urlstring or null(uri)
original_invoiceobject
patientobject
patient_extra_informationstring or null
practitionerobject
reversed_invoicesobject
signatureobject
statusinteger or null
Enum ValueDescription
10Open
20Paid
30Closed
40Open credit
Enum10203040
status_descriptionstring or null
Enum"Open""Paid""Closed""Open credit"
tax_amountstring or null(decimal)
total_amountstring or null(decimal)
updated_atstring(date-time)
{ "appointment": { "links": { "self": "https://api.au1.cliniko.com/v1/appointments/1" } }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1" } }, "business": { "links": { "self": "https://api.au1.cliniko.com/v1/businesses/1" } }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1/invoice_items" } }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" } }, "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "patient_extra_information": "string", "practitioner": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" } }, "reversed_invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices?q%5B%5D=invoice_id%3A%3D1" } }, "signature": { "links": { "self": "https://api.au1.cliniko.com/v1/signatures/1" } }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" }

List invoices

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/invoices?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
invoicesArray of objects(Invoice)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "invoices": [ { "appointment": { "links": {} }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "business": { "links": {} }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": {} }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": {} }, "patient": { "links": {} }, "patient_extra_information": "string", "practitioner": { "links": {} }, "reversed_invoices": { "links": {} }, "signature": { "links": {} }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/invoices?page=2", "previous": "https://api.au1.cliniko.com/v1/invoices?page=1", "next": "https://api.au1.cliniko.com/v1/invoices?page=3" } }

Get invoice

Request

Path
idstring(int64)required
Query
q[]Array of strings
curl -i -X GET \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/invoices/{id}?q%5B%5D=string'

Responses

Successful operation

Bodyapplication/json
appointmentobject
archived_atstring or null(date-time)
attendeeobject
businessobject
closed_atstring or null(date-time)
created_atstring(date-time)
deleted_atstring or null(date-time)
discounted_amountstring or null(decimal)
idstring(int64)
invoice_itemsobject
invoice_tostring or null
issue_datestring(date)
linksobject
net_amountstring or null(decimal)
notesstring or null
numberinteger
online_payment_urlstring or null(uri)
original_invoiceobject
patientobject
patient_extra_informationstring or null
practitionerobject
reversed_invoicesobject
signatureobject
statusinteger or null
Enum ValueDescription
10Open
20Paid
30Closed
40Open credit
Enum10203040
status_descriptionstring or null
Enum"Open""Paid""Closed""Open credit"
tax_amountstring or null(decimal)
total_amountstring or null(decimal)
updated_atstring(date-time)
Response
application/json
{ "appointment": { "links": { "self": "https://api.au1.cliniko.com/v1/appointments/1" } }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1" } }, "business": { "links": { "self": "https://api.au1.cliniko.com/v1/businesses/1" } }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1/invoice_items" } }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" } }, "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "patient_extra_information": "string", "practitioner": { "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1" } }, "reversed_invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices?q%5B%5D=invoice_id%3A%3D1" } }, "signature": { "links": { "self": "https://api.au1.cliniko.com/v1/signatures/1" } }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" }

List invoices for appointment

Request

Path
appointment_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/appointments/{appointment_id}/invoices?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
invoicesArray of objects(Invoice)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "invoices": [ { "appointment": { "links": {} }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "business": { "links": {} }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": {} }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": {} }, "patient": { "links": {} }, "patient_extra_information": "string", "practitioner": { "links": {} }, "reversed_invoices": { "links": {} }, "signature": { "links": {} }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/appointments/1/invoices?page=2", "previous": "https://api.au1.cliniko.com/v1/appointments/1/invoices?page=1", "next": "https://api.au1.cliniko.com/v1/appointments/1/invoices?page=3" } }

List invoices for patient case

Request

Path
patient_case_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/patient_cases/{patient_case_id}/invoices?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
invoicesArray of objects(Invoice)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "invoices": [ { "appointment": { "links": {} }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "business": { "links": {} }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": {} }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": {} }, "patient": { "links": {} }, "patient_extra_information": "string", "practitioner": { "links": {} }, "reversed_invoices": { "links": {} }, "signature": { "links": {} }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1/invoices?page=2", "previous": "https://api.au1.cliniko.com/v1/patient_cases/1/invoices?page=1", "next": "https://api.au1.cliniko.com/v1/patient_cases/1/invoices?page=3" } }

List invoices for attendeeDeprecated

Request

Path
attendee_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/attendees/{attendee_id}/invoices?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
invoicesArray of objects(Invoice)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "invoices": [ { "appointment": { "links": {} }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "business": { "links": {} }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": {} }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": {} }, "patient": { "links": {} }, "patient_extra_information": "string", "practitioner": { "links": {} }, "reversed_invoices": { "links": {} }, "signature": { "links": {} }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1/invoices?page=2", "previous": "https://api.au1.cliniko.com/v1/attendees/1/invoices?page=1", "next": "https://api.au1.cliniko.com/v1/attendees/1/invoices?page=3" } }

List invoices for patientDeprecated

Request

Path
patient_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/patients/{patient_id}/invoices?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
invoicesArray of objects(Invoice)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "invoices": [ { "appointment": { "links": {} }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "business": { "links": {} }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": {} }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": {} }, "patient": { "links": {} }, "patient_extra_information": "string", "practitioner": { "links": {} }, "reversed_invoices": { "links": {} }, "signature": { "links": {} }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/patients/1/invoices?page=2", "previous": "https://api.au1.cliniko.com/v1/patients/1/invoices?page=1", "next": "https://api.au1.cliniko.com/v1/patients/1/invoices?page=3" } }

List invoices for practitionerDeprecated

Request

Path
practitioner_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/practitioners/{practitioner_id}/invoices?order=asc&page=0&per_page=1&q%5B%5D=string&sort=created_at%3Adesc'

Responses

successful operation

Bodyapplication/json
invoicesArray of objects(Invoice)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "invoices": [ { "appointment": { "links": {} }, "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "business": { "links": {} }, "closed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "discounted_amount": "string", "id": "string", "invoice_items": { "links": {} }, "invoice_to": "string", "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/invoices/1" }, "net_amount": "string", "notes": "string", "number": 0, "online_payment_url": "http://example.com", "original_invoice": { "links": {} }, "patient": { "links": {} }, "patient_extra_information": "string", "practitioner": { "links": {} }, "reversed_invoices": { "links": {} }, "signature": { "links": {} }, "status": 10, "status_description": "Open", "tax_amount": "string", "total_amount": "string", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/practitioners/1/invoices?page=2", "previous": "https://api.au1.cliniko.com/v1/practitioners/1/invoices?page=1", "next": "https://api.au1.cliniko.com/v1/practitioners/1/invoices?page=3" } }

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 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