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

PatientForm

archived_atstring or null(date-time)
attendeeobject
bookingobject
completed_atstring or null(date-time)
contentobject or null
created_atstring(date-time)
edited_atstring or null(date-time)
email_to_patient_on_completionboolean or null
idstring(int64)
linksobject
namestring<= 255 characters
patientobject
restricted_to_practitionerboolean or null
signaturesobject or null
updated_atstring(date-time)
urlstring or null(uri)
{ "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1" } }, "booking": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings/1" } }, "completed_at": "2019-08-24T14:15:22Z", "content": { "sections": [ { "name": "string", "description": "string", "questions": [] } ] }, "created_at": "2019-08-24T14:15:22Z", "edited_at": "2019-08-24T14:15:22Z", "email_to_patient_on_completion": true, "id": "string", "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1" }, "name": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "restricted_to_practitioner": true, "signatures": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1/signatures/112233" } }, "updated_at": "2019-08-24T14:15:22Z", "url": "http://example.com" }

List patient forms

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

Responses

successful operation

Bodyapplication/json
patient_formsArray of objects(PatientForm)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "patient_forms": [ { "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "booking": { "links": {} }, "completed_at": "2019-08-24T14:15:22Z", "content": { "sections": [] }, "created_at": "2019-08-24T14:15:22Z", "edited_at": "2019-08-24T14:15:22Z", "email_to_patient_on_completion": true, "id": "string", "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1" }, "name": "string", "patient": { "links": {} }, "restricted_to_practitioner": true, "signatures": { "links": {} }, "updated_at": "2019-08-24T14:15:22Z", "url": "http://example.com" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms?page=2", "previous": "https://api.au1.cliniko.com/v1/patient_forms?page=1", "next": "https://api.au1.cliniko.com/v1/patient_forms?page=3" } }

Create patient form

Request

When creating a patient form with a patient_form_template_id, the values for name, content, and restricted_to_practitioner will be pulled from the template. However, you may provide any of those values to override the template, or even provide all of your own values and exclude the patient_form_template_id altogether.

Bodyapplication/jsonrequired
attendee_idstring(int64)

attendee id

Example: "1"
completedboolean
email_to_patient_on_completionboolean or null
patient_idstring(int64)

patient id

Example: "1"
patient_form_template_idstring(int64)
Example: "1"
contentobject or null
namestring<= 255 characters
restricted_to_practitionerboolean or null
curl -i -X POST \
  -u <username>:<password> \
  https://api.au1.cliniko.com/v1/patient_forms \
  -H 'Content-Type: application/json' \
  -d '{
    "attendee_id": "1",
    "completed": true,
    "email_to_patient_on_completion": true,
    "patient_id": "1",
    "patient_form_template_id": "1",
    "content": {
      "sections": [
        {
          "name": "string",
          "description": "string",
          "questions": [
            {
              "answer": "string",
              "name": "string",
              "required": true,
              "type": "text"
            }
          ]
        }
      ]
    },
    "name": "string",
    "restricted_to_practitioner": true
  }'

Responses

Resource was created

Bodyapplication/json
archived_atstring or null(date-time)
attendeeobject
bookingobject
completed_atstring or null(date-time)
contentobject or null
created_atstring(date-time)
edited_atstring or null(date-time)
email_to_patient_on_completionboolean or null
idstring(int64)
linksobject
namestring<= 255 characters
patientobject
restricted_to_practitionerboolean or null
signaturesobject or null
updated_atstring(date-time)
urlstring or null(uri)
Response
application/json
{ "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1" } }, "booking": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings/1" } }, "completed_at": "2019-08-24T14:15:22Z", "content": { "sections": [ { "name": "string", "description": "string", "questions": [] } ] }, "created_at": "2019-08-24T14:15:22Z", "edited_at": "2019-08-24T14:15:22Z", "email_to_patient_on_completion": true, "id": "string", "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1" }, "name": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "restricted_to_practitioner": true, "signatures": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1/signatures/112233" } }, "updated_at": "2019-08-24T14:15:22Z", "url": "http://example.com" }

Get patient form

Request

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

Responses

Successful operation

Bodyapplication/json
archived_atstring or null(date-time)
attendeeobject
bookingobject
completed_atstring or null(date-time)
contentobject or null
created_atstring(date-time)
edited_atstring or null(date-time)
email_to_patient_on_completionboolean or null
idstring(int64)
linksobject
namestring<= 255 characters
patientobject
restricted_to_practitionerboolean or null
signaturesobject or null
updated_atstring(date-time)
urlstring or null(uri)
Response
application/json
{ "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1" } }, "booking": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings/1" } }, "completed_at": "2019-08-24T14:15:22Z", "content": { "sections": [ { "name": "string", "description": "string", "questions": [] } ] }, "created_at": "2019-08-24T14:15:22Z", "edited_at": "2019-08-24T14:15:22Z", "email_to_patient_on_completion": true, "id": "string", "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1" }, "name": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "restricted_to_practitioner": true, "signatures": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1/signatures/112233" } }, "updated_at": "2019-08-24T14:15:22Z", "url": "http://example.com" }

Update patient form

Request

Path
idstring(int64)required
Bodyapplication/jsonrequired
attendee_idstring(int64)

attendee id

Example: "1"
completedboolean
email_to_patient_on_completionboolean or null
patient_idstring(int64)

patient id

Example: "1"
patient_form_template_idstring(int64)
Example: "1"
contentobject or null
namestring<= 255 characters
restricted_to_practitionerboolean or null
curl -i -X PATCH \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/patient_forms/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
    "attendee_id": "1",
    "completed": true,
    "email_to_patient_on_completion": true,
    "patient_id": "1",
    "patient_form_template_id": "1",
    "content": {
      "sections": [
        {
          "name": "string",
          "description": "string",
          "questions": [
            {
              "answer": "string",
              "name": "string",
              "required": true,
              "type": "text"
            }
          ]
        }
      ]
    },
    "name": "string",
    "restricted_to_practitioner": true
  }'

Responses

Resource was updated

Bodyapplication/json
archived_atstring or null(date-time)
attendeeobject
bookingobject
completed_atstring or null(date-time)
contentobject or null
created_atstring(date-time)
edited_atstring or null(date-time)
email_to_patient_on_completionboolean or null
idstring(int64)
linksobject
namestring<= 255 characters
patientobject
restricted_to_practitionerboolean or null
signaturesobject or null
updated_atstring(date-time)
urlstring or null(uri)
Response
application/json
{ "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1" } }, "booking": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings/1" } }, "completed_at": "2019-08-24T14:15:22Z", "content": { "sections": [ { "name": "string", "description": "string", "questions": [] } ] }, "created_at": "2019-08-24T14:15:22Z", "edited_at": "2019-08-24T14:15:22Z", "email_to_patient_on_completion": true, "id": "string", "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1" }, "name": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "restricted_to_practitioner": true, "signatures": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1/signatures/112233" } }, "updated_at": "2019-08-24T14:15:22Z", "url": "http://example.com" }

Archive patient form

Request

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

Responses

Resource was archived

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

Responses

successful operation

Bodyapplication/json
patient_formsArray of objects(PatientForm)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "patient_forms": [ { "archived_at": "2019-08-24T14:15:22Z", "attendee": { "links": {} }, "booking": { "links": {} }, "completed_at": "2019-08-24T14:15:22Z", "content": { "sections": [] }, "created_at": "2019-08-24T14:15:22Z", "edited_at": "2019-08-24T14:15:22Z", "email_to_patient_on_completion": true, "id": "string", "links": { "self": "https://api.au1.cliniko.com/v1/patient_forms/1" }, "name": "string", "patient": { "links": {} }, "restricted_to_practitioner": true, "signatures": { "links": {} }, "updated_at": "2019-08-24T14:15:22Z", "url": "http://example.com" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/attendees/1/patient_forms?page=2", "previous": "https://api.au1.cliniko.com/v1/attendees/1/patient_forms?page=1", "next": "https://api.au1.cliniko.com/v1/attendees/1/patient_forms?page=3" } }

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