REST
Predictable resources, cursor pagination, idempotency keys, and a versioning policy you can plan around.
For developers
If you can do it in the product, you can do it through the API. That is the rule we hold ourselves to, and the reason interoperability here never requires a sales call.
The contract
Our own clinician app, patient app, and marketplace listings are clients of the same public contract you get. There is no private, more-privileged interface behind it.
curl -X POST https://api.example-ehr.com/v1/appointments \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"patient_id": "pat_8f21c",
"provider_id": "prv_4a17b",
"location_id": "loc_northgate",
"visit_type": "follow_up_20",
"start": "2026-09-14T15:20:00-05:00",
"notify_patient": true
}'Surfaces
Predictable resources, cursor pagination, idempotency keys, and a versioning policy you can plan around.
Fetch exactly the chart shape your screen needs in one round trip.
The clinical record itself, not a read-only projection — search, history, and provenance included.
ADT, ORM, ORU, SIU, DFT with a mapping interface instead of an interface engineer.
Launch your app inside the chart with scoped context and the user’s permissions.
Signed, retried, replayable, and inspectable from the developer portal.
Export the whole tenant, or a cohort, on a schedule you control.
Subscribe to the firehose and build your own reactions to clinical events.
TypeScript, Python, Go, and Java — generated from the same spec the product is built against.
Events
Signed, retried, replayable, and inspectable — with the same permission model as everything else.
patient.createdA new patient record exists, from any surface.
appointment.scheduledIncluding who booked it and through which channel.
encounter.completedThe visit is closed; documentation state included.
lab_result.receivedWith abnormal and critical flags already applied.
claim.submittedAnd every status change that follows it.
document.signedWith the signer, the version, and the attestation.
…and every other resource in the platform, on the same pattern.
What you get
Self-serve, populated with realistic synthetic patients, no sales conversation and no waiting list.
Dated versions, a published deprecation policy, and a minimum twelve-month window on breaking changes.
Machine clients, user-context apps, and scopes narrow enough to satisfy a security review.
Every endpoint with a runnable example, and a changelog that tells you what actually changed.
Your integration’s reads and writes appear in the same trail as everything else.
Take what you built to every other organization on the platform, with revenue share.
Sign up, get keys, and call a real FHIR endpoint before anyone asks you what your budget is.