What HealOS does in CurveHero
AI Frontdesk
What the AI Frontdesk (AI Receptionist) can do in CurveHero during a call:
Connect it from AI Frontdesk → Integrations → Connect an EHR (Connect your EHR).
AI Scribe
How a finished AI Scribe note gets into CurveHero:Connection
Method: HealOS cloud browser, Chrome extension. How the methods compare. You provide- A CurveHero username and password and your practice address (
yourpractice.curvehero.com), in AI Frontdesk → Integrations → Connect an EHR. - An email inbox that receives CurveHero’s sign-in codes, set up with HealOS during onboarding so HealOS can read the codes.
- Checks the sign-in before saving anything: a login that fails is not stored.
- Stores the credentials encrypted and signs in from a secure, US-based cloud browser.
- Keeps one signed-in session per practice and renews it during business hours, so calls don’t wait for a login.
- Reads the emailed sign-in code itself; it accepts only codes that arrive after the login it started.
- The first connection can take several minutes while CurveHero emails the code.
- Yes: works once the practice connects the EHR (or, for the Chrome extension, installs it).
- On request: built; HealOS turns it on for a practice after a review with them.
- Specific setups: built for particular practice configurations; ask us before relying on it.
API actions
HealOS supports 7 actions in CurveHero. Action names (curvehero.<action>) are stable.
Search patients
curvehero.search_patients · patients · version 1
Find an existing patient in the EHR by phone number, name, date of birth or email.
Safety
- External effect: read
- Writes to the EHR: No
- Idempotent: Yes
- Safe to retry: Yes
- Dry run: Not supported
- Touches the practice’s live EHR: Yes
- Runs in a cloud browser session against the EHR’s web app: expect several seconds per call and limited concurrency per practice.
Outputs
Create patient
curvehero.create_patient · patients · version 1
Register a new patient chart in the EHR. Some EHRs need extra fields (for example a mailing address on NextGen).
- Runs in a cloud browser session against the EHR’s web app: expect several seconds per call and limited concurrency per practice.
Outputs
Search appointment slots
curvehero.search_slots · scheduling · version 1
List open appointment times, optionally narrowed to a window, provider, visit type or location.
Safety
- External effect: read
- Writes to the EHR: No
- Idempotent: Yes
- Safe to retry: Yes
- Dry run: Not supported
- Touches the practice’s live EHR: Yes
- Runs in a cloud browser session against the EHR’s web app: expect several seconds per call and limited concurrency per practice.
Outputs
Each item in
slots:
Book appointment
curvehero.book_appointment · scheduling · version 1
Book an appointment for an existing patient, from a slot returned by search_slots.
- Runs in a cloud browser session against the EHR’s web app: expect several seconds per call and limited concurrency per practice.
slot_id or start_at_utc.
Outputs
List upcoming appointments
curvehero.list_appointments · scheduling · version 1
List a patient’s upcoming appointments.
Safety
- External effect: read
- Writes to the EHR: No
- Idempotent: Yes
- Safe to retry: Yes
- Dry run: Not supported
- Touches the practice’s live EHR: Yes
- Runs in a cloud browser session against the EHR’s web app: expect several seconds per call and limited concurrency per practice.
Outputs
Each item in
appointments:
Cancel appointment
curvehero.cancel_appointment · scheduling · version 1
Cancel one of the patient’s appointments. Refused unless the appointment belongs to that patient.
- Runs in a cloud browser session against the EHR’s web app: expect several seconds per call and limited concurrency per practice.
Outputs
Reschedule appointment
curvehero.reschedule_appointment · scheduling · version 1
Move one of the patient’s appointments to a new time. Refused unless the appointment belongs to that patient.
- Runs in a cloud browser session against the EHR’s web app: expect several seconds per call and limited concurrency per practice.
slot_id or start_at_utc.
Outputs

