Cliniko integration
Cliniko is practice management software for health clinics. Manage patients, book, reschedule and cancel individual and group appointments, find available times, record treatment notes, patient forms, medical alerts, recalls and logged communications, and read invoices, products, stock and the account's businesses, practitioners and settings. Account configuration writes (businesses, appointment types, billable items, taxes, templates, suppliers), file uploads and the deprecated DELETE-to-archive and nested list routes are not exposed. Authentication is HTTP Basic with a user's Cliniko API key as the username and an empty password; the shard is the suffix of the key (for example au1 for a key ending in -au1).
Say what should happen.
The workflow builds itself.
What you can do with Cliniko
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Practitioner, 7 operations
get_practitionerGet practitionerGETGets one practitioner by id: name, title, designation, description, active flag, online booking flag and links to appointment types and user.list_appointment_type_inactive_practitionersList appointment type inactive practitionersGETLists the inactive practitioners linked to an appointment type. Pass appointment_type_id from list_appointment_types.list_appointment_type_practitionersList appointment type practitionersGETLists the active practitioners who offer an appointment type. Pass appointment_type_id from list_appointment_types.list_business_inactive_practitionersList business inactive practitionersGETLists the inactive practitioners linked to a business. Pass business_id from list_businesses.list_business_practitionersList business practitionersGETLists the active practitioners working at a business. Pass business_id from list_businesses.list_inactive_practitionersList inactive practitionersGETLists inactive practitioners. 50 per page by default, per_page up to 100; filter with q[].list_practitionersList practitionersGETLists active practitioners (the users who can be booked for appointments). 50 per page by default, per_page up to 100; filter with q[].
Attendee, 5 operations
archive_attendeeArchive attendeePOSTArchives an attendee by id. Returns no body.cancel_attendeeCancel attendeePATCHCancels an attendee's place in an appointment, with an optional cancellation_reason code and note. Returns no body.create_attendeeCreate attendeePOSTAdds a patient to a booked appointment as an attendee. Pass booking_id (from list_bookings or a group appointment) and patient_id.get_attendeeGet attendeeGETGets one attendee by id: the patient and booking it links, arrival flag, cancellation details and links to its invoices, forms and treatment notes.list_attendeesList attendeesGETLists attendees, the records linking a patient to a booked appointment (arrival, cancellation, invoices, forms). 50 per page by default, per_page up to 100; filter with q[].
Individual appointment, 5 operations
archive_individual_appointmentArchive individual appointmentPOSTArchives an individual appointment by id. Returns no body.cancel_individual_appointmentCancel individual appointmentPATCHCancels an individual appointment, with an optional cancellation_reason code and note; apply_to_repeats also cancels its repeats. Returns no body.create_individual_appointmentCreate individual appointmentPOSTBooks an individual appointment: business_id, practitioner_id, appointment_type_id, patient_id and starts_at (UTC). ends_at defaults to the appointment type's duration.get_individual_appointmentGet individual appointmentGETGets one individual appointment by id: times, patient, practitioner, business, appointment type, arrival, cancellation and telehealth details.list_individual_appointmentsList individual appointmentsGETLists individual appointments (one patient with one practitioner). Filter by time with q[] (e.g. starts_at:>2026-01-01T00:00:00Z); 50 per page by default, per_page up to 100.
Patient case, 5 operations
archive_patient_caseArchive patient casePOSTArchives a patient case by id. Returns no body.create_patient_caseCreate patient casePOSTCreates a patient case for patient_id: name, issue and expiry dates, max sessions, max invoiceable amount, referral and contact.get_patient_caseGet patient caseGETGets one patient case by id: name, patient, contact, dates, limits, closed state and links to its attendees, bookings and invoices.list_active_patient_casesList active patient casesGETLists patient cases that are not closed and not archived. 50 per page by default, per_page up to 100; filter with q[].list_patient_casesList patient casesGETLists patient cases, which group a patient's appointments and invoices with optional session and amount limits. 50 per page by default, per_page up to 100; filter with q[].
Communication, 4 operations
archive_communicationArchive communicationPOSTArchives a memo communication by id. Returns no body.create_communicationCreate communicationPOSTLogs a memo communication on a patient record (category_code 12): set type_code (SMS, email, call, other), direction_code, content and patient_id. Records only, sends nothing.get_communicationGet communicationGETGets one communication by id: type, direction, category, content, sender, recipient and linked patient.list_communicationsList communicationsGETLists communications logged on patient records: SMS, emails, phone calls, letters and memos. 50 per page by default, per_page up to 100; filter with q[].
Contact, 4 operations
archive_contactArchive contactPOSTArchives a contact by id. Returns no body.create_contactCreate contactPOSTCreates a contact (a third party such as a referring doctor or company): name, company, address, email, phone numbers and notes.get_contactGet contactGETGets one contact by id: name, company, doctor type, address, email, phone numbers and notes.list_contactsList contactsGETLists contacts, the third parties stored in the account (such as referring doctors and companies). 50 per page by default, per_page up to 100; filter with q[].
Daily availability, 4 operations
get_daily_availabilityGet daily availabilityGETGets one daily availability by id: weekday, time zone and the working periods of a practitioner at a business.list_business_daily_availabilitiesList business daily availabilitiesGETLists the regular weekly working hours of practitioners at one business. Pass business_id from list_businesses.list_daily_availabilitiesList daily availabilitiesGETLists daily availabilities, the regular weekly working hours of each practitioner at each business. 50 per page by default, per_page up to 100; filter with q[].list_practitioner_daily_availabilitiesList practitioner daily availabilitiesGETLists the regular weekly working hours of one practitioner. Pass practitioner_id from list_practitioners.
Group appointment, 4 operations
archive_group_appointmentArchive group appointmentPOSTArchives a group appointment by id. Returns no body.create_group_appointmentCreate group appointmentPOSTCreates a group appointment (a class): business_id, practitioner_id, appointment_type_id, starts_at and max_attendees. Add patients with create_attendee.get_group_appointmentGet group appointmentGETGets one group appointment by id: times, business, practitioner, appointment type, max attendees and attendees.list_group_appointmentsList group appointmentsGETLists group appointments (classes with several attendees). 50 per page by default, per_page up to 100; filter with q[].
Invoice, 4 operations
get_invoiceGet invoiceGETGets one invoice by id: number, status, issue date, totals, tax, patient, practitioner, business and links to its items.list_appointment_invoicesList appointment invoicesGETLists the invoices raised for one appointment. Pass the appointment id (an individual or group appointment id).list_invoicesList invoicesGETLists invoices with their status, totals, patient, practitioner and business. 50 per page by default, per_page up to 100; filter with q[].list_patient_case_invoicesList patient case invoicesGETLists the invoices linked to a patient case. Pass patient_case_id from list_patient_cases.
Medical alert, 4 operations
create_medical_alertCreate medical alertPOSTAdds a medical alert (a warning shown on the record) to a patient: name and patient_id.delete_medical_alertDelete medical alertDELETEDeletes a medical alert by id. Returns no body.get_medical_alertGet medical alertGETGets one medical alert by id: its name and the patient it belongs to.list_medical_alertsList medical alertsGETLists medical alerts, the warnings recorded on patient records. 50 per page by default, per_page up to 100; filter with q[].
Patient, 4 operations
archive_patientArchive patientPOSTArchives a patient by id (hidden from lists until unarchived). Returns no body.create_patientCreate patientPOSTCreates a patient record: first_name and last_name, plus contact details, date of birth, address, notes and custom fields.get_patientGet patientGETGets one patient by id: name, date of birth, contact details, address, notes, custom fields and links to appointments, invoices and notes.list_patientsList patientsGETLists patients. Search with q[] (e.g. last_name:~son, email:[email protected], updated_at:>2026-01-01T00:00:00Z); 50 per page by default, per_page up to 100.
Patient attachment, 4 operations
archive_patient_attachmentArchive patient attachmentPOSTArchives a patient attachment by id. Returns no body.get_patient_attachmentGet patient attachmentGETGets one patient attachment by id: filename, content type, description, patient and the link to download its content.list_patient_attachmentsList patient attachmentsGETLists files attached to patient records: filename, content type, description and a link to the file content. 50 per page by default, per_page up to 100; filter with q[].list_patient_case_attachmentsList patient case attachmentsGETLists the files attached to a patient case. Pass patient_case_id from list_patient_cases.
Patient form, 4 operations
archive_patient_formArchive patient formPOSTArchives a patient form by id. Returns no body.create_patient_formCreate patient formPOSTCreates a patient form for patient_id from patient_form_template_id (or with its own content). Set email_to_patient_on_completion only when the patient should get a copy.get_patient_formGet patient formGETGets one patient form by id: name, completion state, answers (content.sections) and the patient, attendee and business it belongs to.list_patient_formsList patient formsGETLists patient forms (filled or pending intake and consent forms). 50 per page by default, per_page up to 100; filter with q[].
Product, 4 operations
archive_productArchive productPOSTArchives a product by id. Returns no body.create_productCreate productPOSTCreates a product: name, item code, price, cost price, stock level, tax and supplier.get_productGet productGETGets one product by id: name, item code, serial number, price, cost price, stock level, tax and supplier.list_productsList productsGETLists products sold or stocked by the account, with price, cost, stock level and supplier. 50 per page by default, per_page up to 100; filter with q[].
Treatment note, 4 operations
archive_treatment_noteArchive treatment notePOSTArchives a treatment note by id. Returns no body.create_treatment_noteCreate treatment notePOSTCreates a treatment note for patient_id from treatment_note_template_id (or with its own content); draft=true keeps it editable. Paragraph answers accept limited HTML.get_treatment_noteGet treatment noteGETGets one treatment note by id: title, author, draft state, content (sections and answers), patient, booking and body charts.list_patient_treatment_notesList patient treatment notesGETLists the treatment notes of one patient. Pass patient_id from list_patients. 50 per page by default, per_page up to 100; filter with q[].
Appointment type, 3 operations
get_appointment_typeGet appointment typeGETGets one appointment type by id: name, duration, category, color, max attendees, linked billable item and online booking settings.list_appointment_typesList appointment typesGETLists the account's appointment types (the bookable services with their duration, billing and online-booking settings). 50 per page by default, per_page up to 100; filter with q[].list_practitioner_appointment_typesList practitioner appointment typesGETLists the appointment types a practitioner offers. Pass practitioner_id from list_practitioners. 50 per page by default, per_page up to 100; filter with q[].
Availability block, 3 operations
create_availability_blockCreate availability blockPOSTCreates an availability block (extra working time) for a practitioner at a business, optionally repeating through repeat_rule.get_availability_blockGet availability blockGETGets one availability block by id: business, practitioner, start and end times and repeat rule.list_availability_blocksList availability blocksGETLists availability blocks, extra working time added to a practitioner's calendar at a business. 50 per page by default, per_page up to 100; filter with q[].
Conflict, 3 operations
get_group_appointment_conflictsGet group appointment conflictsGETTells whether a group appointment overlaps other bookings of the practitioner (conflicts.exist).get_individual_appointment_conflictsGet individual appointment conflictsGETTells whether an individual appointment overlaps other bookings of the practitioner (conflicts.exist).get_unavailable_block_conflictsGet unavailable block conflictsGETTells whether an unavailable block overlaps other bookings of the practitioner (conflicts.exist).
Recall, 3 operations
archive_recallArchive recallPOSTArchives a recall by id. Returns no body.create_recallCreate recallPOSTCreates a recall (a reminder to bring patient_id back on recall_at) of a recall_type_id, with optional notes.get_recallGet recallGETGets one recall by id: patient, recall type, date, recalled flag and notes.
Relationship, 3 operations
archive_relationshipArchive relationshipPOSTArchives a relationship by id. Returns no body.create_relationshipCreate relationshipPOSTLinks two patients: patient_id, related_patient_id and relation (10 Parent, 20 Child, 30 Sibling, 40 Spouse, 50 Partner, 60 Relative, 70 Other).get_relationshipGet relationshipGETGets one relationship by id: the two patients and the relation.
Unavailable block, 3 operations
archive_unavailable_blockArchive unavailable blockPOSTArchives an unavailable block by id. Returns no body.create_unavailable_blockCreate unavailable blockPOSTBlocks time in a practitioner's calendar at a business: starts_at, ends_at, optional unavailable_block_type_id, notes and repeat_rule.get_unavailable_blockGet unavailable blockGETGets one unavailable block by id: times, business, practitioner, type, notes and repeat details.
Available time, 2 operations
get_next_available_timeGet next available timeGETReturns the first bookable start time (appointment_start) for a practitioner, appointment type and business between from and to (dates, at most 7 days apart).list_available_timesList available timesGETLists bookable start times for a practitioner, appointment type and business between from and to (dates, at most 7 days apart). Respects the account's online booking settings.
Billable item, 2 operations
get_billable_itemGet billable itemGETGets one billable item by id: name, item code, type, price, tax and concession prices.list_billable_itemsList billable itemsGETLists billable items, the services and fees that can be added to invoices, with their price and tax. 50 per page by default, per_page up to 100; filter with q[].
Body chart, 2 operations
get_body_chartGet body chartGETGets one body chart by id: its images and the treatment note it belongs to.list_body_chartsList body chartsGETLists body charts, the annotated body diagrams saved on treatment notes. 50 per page by default, per_page up to 100; filter with q[].
Booking, 2 operations
get_bookingGet bookingGETGets one booking by id: times, business, practitioner, appointment type, attendees and cancellation details.list_bookingsList bookingsGETLists bookings, every calendar entry of the account: individual appointments, group appointments and unavailable blocks. 50 per page by default, per_page up to 100; filter with q[].
Business, 2 operations
get_businessGet businessGETGets one business (clinic location) by id: name, address, contact details, time zone and the appointment types and practitioners it offers.list_businessesList businessesGETLists the account's businesses (clinic locations), with address, contact details and online booking settings. 50 per page by default, per_page up to 100; filter with q[].
Concession price, 2 operations
get_concession_priceGet concession priceGETGets one concession price by id: the billable item, the concession type and the price.list_concession_pricesList concession pricesGETLists concession prices, the discounted price of a billable item for a concession type. 50 per page by default, per_page up to 100; filter with q[].
Concession type, 2 operations
get_concession_typeGet concession typeGETGets one concession type by id, with links to its concession prices.list_concession_typesList concession typesGETLists concession types, the discount categories that can be set on patients. 50 per page by default, per_page up to 100; filter with q[].
Invoice item, 2 operations
get_invoice_itemGet invoice itemGETGets one invoice item by id: billable item or product, quantity, unit price, discount, tax and total.list_invoice_itemsList invoice itemsGETLists invoice items (the lines of invoices): item, quantity, unit price, discount and tax. 50 per page by default, per_page up to 100; filter with q[].
Patient form template, 2 operations
get_patient_form_templateGet patient form templateGETGets one patient form template by id: name, sections and questions.list_patient_form_templatesList patient form templatesGETLists patient form templates, the blank forms (intake, consent) that patient forms are created from. 50 per page by default, per_page up to 100; filter with q[].
Practitioner reference number, 2 operations
get_practitioner_reference_numberGet practitioner reference numberGETGets one practitioner reference number by id: name, number, practitioner and business.list_practitioner_reference_numbersList practitioner reference numbersGETLists practitioner reference numbers, the provider or registration numbers a practitioner holds at a business. 50 per page by default, per_page up to 100; filter with q[].
Product supplier, 2 operations
get_product_supplierGet product supplierGETGets one product supplier by id.list_product_suppliersList product suppliersGETLists product suppliers. 50 per page by default, per_page up to 100; filter with q[].
Settings, 2 operations
get_public_settingsGet public settingsGETGets the account's public settings: the same groups as get_settings (account, calendar, online bookings, terminology and others).get_settingsGet settingsGETGets the account settings (account, calendar, online bookings, payments, reminders, SMS, terminology, custom patient fields). Needs a user role that can view settings.
Stock adjustment, 2 operations
create_stock_adjustmentCreate stock adjustmentPOSTRecords a stock change for product_id: quantity (negative only for a decreasing adjustment_type) and adjustment_type such as Stock Purchase or Item Sold.get_stock_adjustmentGet stock adjustmentGETGets one stock adjustment by id: product, quantity, adjustment type and notes.
User, 2 operations
get_current_userGet current userGETGets the user who owns the API key: name, email, role and active flag. Use it to check the credential.get_userGet userGETGets one user by id: name, email, phone numbers, role and active flag.
Recall type, 1 operation
get_recall_typeGet recall typeGETGets one recall type by id: name and default duration until the recall.
Referral source, 1 operation
get_patient_referral_sourceGet patient referral sourceGETGets how a patient was referred: referral source type, referrer, subcategory and notes. Pass patient_id from list_patients.
Referral source type, 1 operation
get_referral_source_typeGet referral source typeGETGets one referral source type by id: name, referrer type and subcategories.
Service, 1 operation
list_business_servicesList business servicesGETLists the services offered at one business (an appointment type and the practitioners who offer it there).
Signature, 1 operation
get_patient_form_signatureGet patient form signatureGETGets one signature captured on a patient form: the image link and who signed. Pass patient_form_id and the signature id from the form's content.
Tax, 1 operation
get_taxGet taxGETGets one tax by id: name, rate and amount.
Treatment note template, 1 operation
get_treatment_note_templateGet treatment note templateGETGets one treatment note template by id: name, sections, questions and print settings.
Unavailable block type, 1 operation
get_unavailable_block_typeGet unavailable block typeGETGets one unavailable block type by id: name, color and default duration.
Showing the first 120 of 151 endpoints. The rest are in the product, searchable from the workflow builder and from chat.
Use Cliniko from Claude Code, Cursor or Codex
Connect Cliniko in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Cliniko operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Cliniko
- Create your workspace
Sign up free. Nothing to install.
- Connect Cliniko once
Add your Cliniko connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Cliniko integration FAQ
What can you do with the Cliniko integration?
LiveContext exposes 151 operations on Cliniko, covering practitioner, attendee, individual appointment and patient case.
