Build on the same APIthat runs circleOS.
Patients, bookings, documents, lab orders, billing — every object in the clinic is a typed REST endpoint, an event you can subscribe to, and an automation you can wire up. Public and private APIs, typed client libraries, fully documented.
import { createCircleClient } from "@circle-health-berlin/sdk";const circle = createCircleClient({ baseUrl: "https://os.example.com/api/v1", headers: { Authorization: `Bearer ${process.env.CIRCLE_API_KEY}`, "x-organization-id": "org_a1b2c3", },});// Typed end to end — every resource autocompletesconst { data: services } = await circle.GET("/services");- 300+
- API endpoints
- 30+
- Webhook events
- 1
- Typed SDK
- 15+
- Integrations
Solutions
Whatever you're building, the endpoint exists.
Scheduling, intake, billing, records, labs, messaging — every clinical and commercial workflow in circleOS is in the API.
Scheduling
Real-time availability across providers and locations. Book, reschedule, and cancel appointments from your own UI.
/scheduling · /bookings
Intake & forms
Send dynamic intake and consent forms; submissions sync straight back into the patient record.
/forms · /form-submissions
Payments & billing
Invoices, payment links, and checkout — with Stripe payments flowing back to you as events.
/invoices · /purchases
Patient records
Demographics, documents, and notes behind one typed API, scoped per organization.
/patients · /documents
Lab orders & results
Create lab orders programmatically and receive results the moment they land, via webhook.
/lab-orders
Care plans
Generate, schedule, assign, and export structured care plans for ongoing treatment.
/plans
Messaging
Two-way patient messaging over SMS and email through built-in Twilio and Sipgate channels.
/conversations · /messages
Commerce & catalogue
A public catalogue, carts, and checkout for selling services, products, and bundles online.
offering API
The platform
Everything in the product,
exposed to your code.
The same APIs that power circleOS itself — a private app API and a public Offering API, each with a typed client library.
300+ endpoints across every object in the clinic, described by a public OpenAPI 3.1 spec.
A public, browser-safe API for catalogue, carts, checkout, and booking.
Intro consultation
A typed TypeScript client for each API, generated from its spec.
Subscribe to 30+ events and react the moment something changes.
Turn any event into an action — or POST the payload to your own service.
Trigger
Booking · no-show
Action
Send webhook
Organization-scoped API keys with scopes, backed by WorkOS — plus SSO for staff.
Production
sk_live_••••4f2a
Client libraries
Typed from requestto response.
@circle-health-berlin/sdk is generated from the same OpenAPI spec the API is built on. Paths, params, and payloads autocomplete as you type, and a schema change surfaces as a type error in your editor — not a surprise in production.
- Path, query, and body fully typed
- ESM and CommonJS builds
- Validated requests and responses
Building a patient-facing storefront? The public Offering API ships its own typed client, @circle-health-berlin/offering — see the online shop guide.
// One client, the whole clinicconst { data: patient } = await circle.GET("/patients/{id}", { params: { path: { id: patientId } },});// Responses are typed — no casting, no guessingconsole.log(patient.firstName, patient.email);Security
Built for the most sensitive data.
Patient data demands more. circleOS keeps it private, compliant, and access-controlled by default.
Hosted in Europe
All data is stored and processed in the EU. It never leaves Europe.
Encrypted throughout
TLS in transit, encrypted at rest. Nothing is ever stored in the clear.
GDPR compliant
Designed around GDPR — data minimisation, audit trails, a clear processing model.
Granular roles & scopes
Scope every key and teammate to exactly what they need. Org-isolated by default.
Events
Know the moment it happens.
Every meaningful change emits an event. Subscribe to the resources you care about and circleOS posts a signed payload to your endpoint, with at-least-once delivery.
Patients
- patient.created
- patient.updated
- patient.merged
- patient.tagged
Bookings
- booking.booked
- booking.cancelled
- booking.no_show
- booking.in_progress
Clinical
- lab_order.results_received
- document.created
- note.created
- plan.assigned
Commerce
- checkout.complete
- invoice.created
- payment.created
- voucher.created
{ "event": "booking.booked", "data": { "id": "bkg_9f2c…", "patientId": "pat_4a1b…", "serviceId": "svc_intro", "startsAt": "2026-07-02T09:30:00Z", "status": "confirmed" }}Guides
Start from a working example.
Step-by-step guides in the circleOS docs, each ending with a checklist and a link into the API reference.
SDK quickstart
Install the SDK, authenticate, and make your first typed call.
Online shop with Next.js
Build a storefront on the catalogue, cart, and checkout APIs.
Custom booking flow
Read availability and create bookings from your own UI.
Handling webhooks
Subscribe to events, verify payloads, and stay in sync.
Start building on circleOS.
Grab an API key, install the SDK, and make your first call in minutes.