API keys
Practice-scoped keys for server-to-server access on Pro and Enterprise. Send as Bearer or X-Api-Key.
A read REST API, signed webhooks and official SDKs for clients, forms, submissions, review notes and practice analytics — available on Pro and Enterprise.
Coverage
The live surface area — not a roadmap list.
REST API
Base URL https://cliniform.co.uk/api/v1. Authenticate with your practice API key. List endpoints support page and per_page (max 100).
Need to create clients or send invitations from your own app? Use webhooks into Make/Zapier, the WordPress plugin, or talk to us about write access on the roadmap.
Authentication
Practice-scoped keys for server-to-server access on Pro and Enterprise. Send as Bearer or X-Api-Key.
Current REST endpoints are GET-only. Create and update flows stay in the back office, WordPress plugin, or automations.
Every delivery includes X-CliniForm-Signature (HMAC-SHA256) plus timestamp and event headers.
Separate site keys for the WordPress plugin — not interchangeable with your practice API key.
Webhooks
Keep your tools in sync with activity in CliniForm. Connect through Zapier, Make or your own application.
client.created
A new client record was created.
client.updated
An existing client record was updated.
form.invitation.created
A consultation invitation was created for a client.
form.invitation.sent
A consultation invitation was delivered by email or SMS.
form.started
A client began completing a consultation form.
form.completed
A client submitted a consultation form.
submission.reviewed
A practitioner marked a form submission as reviewed.
review_note.created
A review / treatment note was started. Clinical content is not included.
review_note.completed
A review / treatment note was completed. Clinical content is not included.
appointment.created
A booking appointment was created.
payment.completed
A payment was successfully completed.
Payloads include IDs and timestamps. Clinical free-text is excluded.
SDKs
Official clients for PHP, Laravel, JavaScript, Node, Python and C# — each ships with install instructions, working examples and a downloadable package aligned to the live read API.
Official PHP client covering the full REST surface and webhook verification.
composer require cliniform/php-sdk
# or download the zip below and require via a path repository
<?php
require 'vendor/autoload.php';
use Cliniform\Client;
$client = new Client(
apiKey: getenv('CLINIFORM_API_KEY'),
baseUrl: 'https://cliniform.co.uk/api/v1',
);
$me = $client->me();
$clients = $client->clients(search: 'smith');
foreach ($clients['data'] as $row) {
echo $row['full_name'] . PHP_EOL;
}
Laravel package with config publishing, container binding and a Cliniform facade.
composer require cliniform/laravel
php artisan vendor:publish --tag=cliniform-config
# .env
CLINIFORM_API_KEY=your_key
CLINIFORM_BASE_URL=https://cliniform.co.uk/api/v1
use Cliniform\Laravel\Facades\Cliniform;
$practice = Cliniform::me();
$clients = Cliniform::clients(search: 'smith');
return view('clients.index', [
'practice' => $practice['data'],
'clients' => $clients['data'],
]);
ESM client for trusted browser or runtime environments that support fetch.
npm install @cliniform/js
# or: npm install ./cliniform-js-sdk
import { CliniformClient } from '@cliniform/js';
const client = new CliniformClient(
import.meta.env.CLINIFORM_API_KEY,
'https://cliniform.co.uk/api/v1',
);
const me = await client.me();
const clients = await client.clients({ search: 'smith' });
console.log(me.data.name, clients.data.length);
Node 18+ SDK with ESM, CommonJS and TypeScript types, plus webhook helpers.
npm install @cliniform/node
# or: npm install ./cliniform-node-sdk
import { CliniformClient } from '@cliniform/node';
const client = new CliniformClient(process.env.CLINIFORM_API_KEY, 'https://cliniform.co.uk/api/v1');
const me = await client.me();
const clients = await client.clients({ search: 'smith' });
console.log(me.data.plan_name, clients.meta.total);
Stdlib-only Python client — no third-party HTTP dependencies required.
pip install cliniform
# or: pip install ./cliniform-python-sdk
import os
from cliniform import CliniformClient
client = CliniformClient(
os.environ["CLINIFORM_API_KEY"],
base_url="https://cliniform.co.uk/api/v1",
)
me = client.me()
clients = client.clients(search="smith")
print(me["data"]["name"], clients["meta"]["total"])
.NET 8 client with async methods and constant-time webhook verification.
dotnet add package Cliniform
# or: dotnet add reference ./cliniform-csharp-sdk/Cliniform.csproj
using Cliniform;
using var client = new CliniformClient(
Environment.GetEnvironmentVariable("CLINIFORM_API_KEY")!,
"https://cliniform.co.uk/api/v1"
);
var me = await client.MeAsync();
var clients = await client.ClientsAsync(search: "smith");
Console.WriteLine(me.GetProperty("data").GetProperty("name"));
In-app docs
Full endpoint reference, curl examples and webhook payload details live in your Pro or Enterprise account.
Browse endpoints, copy curl examples and inspect webhook events without leaving CliniForm.
Log in to open the docsIntegrations
Signed webhooks into Make scenarios with event selection and delivery history
Signed webhooks into Zapier with the same event catalog
Embed consultation forms and surface practice analytics
Auto-send the mapped CliniForm form when a client books
Export consultations, notes and images to a Drive folder
Export completed consultation files to Microsoft OneDrive
Export completed consultation files to Dropbox
Subscriptions, online payments and Terminal for practice apps
Transactional email for invitations and practice messages
Outbound and reply-capable SMS
Meta Cloud API messaging for Client Messaging
Marketplace discovery with bookings managed in CliniForm
Need a custom integration? Talk to us.
Tell us your name and email, then send a message. A teammate will reply here.
CliniForm is typing…
This chat has ended. The transcript is saved.