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

PatientCase

archived_atstring or null(date-time)
attendee_idsArray of strings or null(int64)
attendeesobject
bookingsobject
closed_atstring or null(date-time)
contactobject
created_atstring(date-time)
expiry_datestring or null(date)
idstring(int64)
include_cancelled_attendeesboolean or null
include_dna_attendeesboolean or null
invoicesobject
issue_datestring or null(date)
linksobject
max_invoiceable_amountstring or null(decimal)> 0
max_sessionsinteger or null[ 1 .. 200 ]
namestring
notesstring or null
patientobject
patient_attachmentsobject
referralboolean or null
referral_typestring or null
Enum"dva""medicare"
updated_atstring(date-time)
closedboolean or nullDeprecated
{ "archived_at": "2019-08-24T14:15:22Z", "attendee_ids": [ "string" ], "attendees": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1/attendees" } }, "bookings": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings?q%5B%5D=patient_case_id%3A%3D1" } }, "closed": true, "closed_at": "2019-08-24T14:15:22Z", "contact": { "links": { "self": "https://api.au1.cliniko.com/v1/contacts/1" } }, "created_at": "2019-08-24T14:15:22Z", "expiry_date": "2019-08-24", "id": "string", "include_cancelled_attendees": true, "include_dna_attendees": true, "invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices?q%5B%5D=patient_case_id%3A%3D1" } }, "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1" }, "max_invoiceable_amount": "string", "max_sessions": 1, "name": "string", "notes": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "patient_attachments": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_attachments?q%5B%5D=patient_case_id%3A%3D1" } }, "referral": true, "referral_type": "dva", "updated_at": "2019-08-24T14:15:22Z" }

List patient cases

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

Responses

successful operation

Bodyapplication/json
patient_casesArray of objects(PatientCase)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "patient_cases": [ { "archived_at": "2019-08-24T14:15:22Z", "attendee_ids": [ "string" ], "attendees": { "links": {} }, "bookings": { "links": {} }, "closed": true, "closed_at": "2019-08-24T14:15:22Z", "contact": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "expiry_date": "2019-08-24", "id": "string", "include_cancelled_attendees": true, "include_dna_attendees": true, "invoices": { "links": {} }, "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1" }, "max_invoiceable_amount": "string", "max_sessions": 1, "name": "string", "notes": "string", "patient": { "links": {} }, "patient_attachments": { "links": {} }, "referral": true, "referral_type": "dva", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases?page=2", "previous": "https://api.au1.cliniko.com/v1/patient_cases?page=1", "next": "https://api.au1.cliniko.com/v1/patient_cases?page=3" } }

Create patient case

Request

Bodyapplication/jsonrequired
closedboolean or null
contact_idstring(int64)

contact id

Example: "1"
expiry_datestring or null(date)
include_cancelled_attendeesboolean or null
include_dna_attendeesboolean or null
issue_datestring or null(date)
namestring
notesstring or null
max_invoiceable_amountstring or null(decimal)> 0
max_sessionsinteger or null[ 1 .. 200 ]
patient_idstring(int64)

patient id

Example: "1"
referralboolean or null
referral_typestring or null
Enum"dva""medicare"
attendee_idsArray of strings or null(int64)
Example: [1]
patient_attachment_idsArray of strings(int64)

Patient attachment ids

Example: ["1"]
curl -i -X POST \
  -u <username>:<password> \
  https://api.au1.cliniko.com/v1/patient_cases \
  -H 'Content-Type: application/json' \
  -d '{
    "closed": true,
    "contact_id": "1",
    "expiry_date": "2019-08-24",
    "include_cancelled_attendees": true,
    "include_dna_attendees": true,
    "issue_date": "2019-08-24",
    "name": "string",
    "notes": "string",
    "max_invoiceable_amount": "string",
    "max_sessions": 1,
    "patient_id": "1",
    "referral": true,
    "referral_type": "dva",
    "attendee_ids": [
      1
    ],
    "patient_attachment_ids": [
      "1"
    ]
  }'

Responses

Resource was created

Bodyapplication/json
archived_atstring or null(date-time)
attendee_idsArray of strings or null(int64)
attendeesobject
bookingsobject
closed_atstring or null(date-time)
contactobject
created_atstring(date-time)
expiry_datestring or null(date)
idstring(int64)
include_cancelled_attendeesboolean or null
include_dna_attendeesboolean or null
invoicesobject
issue_datestring or null(date)
linksobject
max_invoiceable_amountstring or null(decimal)> 0
max_sessionsinteger or null[ 1 .. 200 ]
namestring
notesstring or null
patientobject
patient_attachmentsobject
referralboolean or null
referral_typestring or null
Enum"dva""medicare"
updated_atstring(date-time)
closedboolean or nullDeprecated
Response
application/json
{ "archived_at": "2019-08-24T14:15:22Z", "attendee_ids": [ "string" ], "attendees": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1/attendees" } }, "bookings": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings?q%5B%5D=patient_case_id%3A%3D1" } }, "closed": true, "closed_at": "2019-08-24T14:15:22Z", "contact": { "links": { "self": "https://api.au1.cliniko.com/v1/contacts/1" } }, "created_at": "2019-08-24T14:15:22Z", "expiry_date": "2019-08-24", "id": "string", "include_cancelled_attendees": true, "include_dna_attendees": true, "invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices?q%5B%5D=patient_case_id%3A%3D1" } }, "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1" }, "max_invoiceable_amount": "string", "max_sessions": 1, "name": "string", "notes": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "patient_attachments": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_attachments?q%5B%5D=patient_case_id%3A%3D1" } }, "referral": true, "referral_type": "dva", "updated_at": "2019-08-24T14:15:22Z" }

List active patient cases

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

Responses

successful operation

Bodyapplication/json
patient_casesArray of objects(PatientCase)
total_entriesinteger
Example: 1
linksobject
Response
application/json
{ "patient_cases": [ { "archived_at": "2019-08-24T14:15:22Z", "attendee_ids": [ "string" ], "attendees": { "links": {} }, "bookings": { "links": {} }, "closed": true, "closed_at": "2019-08-24T14:15:22Z", "contact": { "links": {} }, "created_at": "2019-08-24T14:15:22Z", "expiry_date": "2019-08-24", "id": "string", "include_cancelled_attendees": true, "include_dna_attendees": true, "invoices": { "links": {} }, "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1" }, "max_invoiceable_amount": "string", "max_sessions": 1, "name": "string", "notes": "string", "patient": { "links": {} }, "patient_attachments": { "links": {} }, "referral": true, "referral_type": "dva", "updated_at": "2019-08-24T14:15:22Z" } ], "total_entries": 1, "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/active?page=2", "previous": "https://api.au1.cliniko.com/v1/patient_cases/active?page=1", "next": "https://api.au1.cliniko.com/v1/patient_cases/active?page=3" } }

Get patient case

Request

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

Responses

Successful operation

Bodyapplication/json
archived_atstring or null(date-time)
attendee_idsArray of strings or null(int64)
attendeesobject
bookingsobject
closed_atstring or null(date-time)
contactobject
created_atstring(date-time)
expiry_datestring or null(date)
idstring(int64)
include_cancelled_attendeesboolean or null
include_dna_attendeesboolean or null
invoicesobject
issue_datestring or null(date)
linksobject
max_invoiceable_amountstring or null(decimal)> 0
max_sessionsinteger or null[ 1 .. 200 ]
namestring
notesstring or null
patientobject
patient_attachmentsobject
referralboolean or null
referral_typestring or null
Enum"dva""medicare"
updated_atstring(date-time)
closedboolean or nullDeprecated
Response
application/json
{ "archived_at": "2019-08-24T14:15:22Z", "attendee_ids": [ "string" ], "attendees": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1/attendees" } }, "bookings": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings?q%5B%5D=patient_case_id%3A%3D1" } }, "closed": true, "closed_at": "2019-08-24T14:15:22Z", "contact": { "links": { "self": "https://api.au1.cliniko.com/v1/contacts/1" } }, "created_at": "2019-08-24T14:15:22Z", "expiry_date": "2019-08-24", "id": "string", "include_cancelled_attendees": true, "include_dna_attendees": true, "invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices?q%5B%5D=patient_case_id%3A%3D1" } }, "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1" }, "max_invoiceable_amount": "string", "max_sessions": 1, "name": "string", "notes": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "patient_attachments": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_attachments?q%5B%5D=patient_case_id%3A%3D1" } }, "referral": true, "referral_type": "dva", "updated_at": "2019-08-24T14:15:22Z" }

Update patient case

Request

Path
idstring(int64)required
Bodyapplication/jsonrequired
closedboolean or null
contact_idstring(int64)

contact id

Example: "1"
expiry_datestring or null(date)
include_cancelled_attendeesboolean or null
include_dna_attendeesboolean or null
issue_datestring or null(date)
namestring
notesstring or null
max_invoiceable_amountstring or null(decimal)> 0
max_sessionsinteger or null[ 1 .. 200 ]
patient_idstring(int64)

patient id

Example: "1"
referralboolean or null
referral_typestring or null
Enum"dva""medicare"
attendee_idsArray of strings or null(int64)
Example: [1]
patient_attachment_idsArray of strings(int64)

Patient attachment ids

Example: ["1"]
curl -i -X PATCH \
  -u <username>:<password> \
  'https://api.au1.cliniko.com/v1/patient_cases/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
    "closed": true,
    "contact_id": "1",
    "expiry_date": "2019-08-24",
    "include_cancelled_attendees": true,
    "include_dna_attendees": true,
    "issue_date": "2019-08-24",
    "name": "string",
    "notes": "string",
    "max_invoiceable_amount": "string",
    "max_sessions": 1,
    "patient_id": "1",
    "referral": true,
    "referral_type": "dva",
    "attendee_ids": [
      1
    ],
    "patient_attachment_ids": [
      "1"
    ]
  }'

Responses

Resource was updated

Bodyapplication/json
archived_atstring or null(date-time)
attendee_idsArray of strings or null(int64)
attendeesobject
bookingsobject
closed_atstring or null(date-time)
contactobject
created_atstring(date-time)
expiry_datestring or null(date)
idstring(int64)
include_cancelled_attendeesboolean or null
include_dna_attendeesboolean or null
invoicesobject
issue_datestring or null(date)
linksobject
max_invoiceable_amountstring or null(decimal)> 0
max_sessionsinteger or null[ 1 .. 200 ]
namestring
notesstring or null
patientobject
patient_attachmentsobject
referralboolean or null
referral_typestring or null
Enum"dva""medicare"
updated_atstring(date-time)
closedboolean or nullDeprecated
Response
application/json
{ "archived_at": "2019-08-24T14:15:22Z", "attendee_ids": [ "string" ], "attendees": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1/attendees" } }, "bookings": { "links": { "self": "https://api.au1.cliniko.com/v1/bookings?q%5B%5D=patient_case_id%3A%3D1" } }, "closed": true, "closed_at": "2019-08-24T14:15:22Z", "contact": { "links": { "self": "https://api.au1.cliniko.com/v1/contacts/1" } }, "created_at": "2019-08-24T14:15:22Z", "expiry_date": "2019-08-24", "id": "string", "include_cancelled_attendees": true, "include_dna_attendees": true, "invoices": { "links": { "self": "https://api.au1.cliniko.com/v1/invoices?q%5B%5D=patient_case_id%3A%3D1" } }, "issue_date": "2019-08-24", "links": { "self": "https://api.au1.cliniko.com/v1/patient_cases/1" }, "max_invoiceable_amount": "string", "max_sessions": 1, "name": "string", "notes": "string", "patient": { "links": { "self": "https://api.au1.cliniko.com/v1/patients/1" } }, "patient_attachments": { "links": { "self": "https://api.au1.cliniko.com/v1/patient_attachments?q%5B%5D=patient_case_id%3A%3D1" } }, "referral": true, "referral_type": "dva", "updated_at": "2019-08-24T14:15:22Z" }

Archive patient case

Request

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

Responses

Resource was archived

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