September 2026
7 days ago by Ethan Breinholt
What's New
Appointment and procedure webhooks now send v3.1-specific payloads to v3.1 subscriptions. v3.1 also adds several new response fields and filters, including UTM parameters in appointment booking_details and a new existing procedure status.
Added
- [v3.1]
GET /appointment_typesnow accepts an optionalprovider_idquery parameter. When it's set, only appointment types offered by that provider are returned. - [v3.1] The
subscriberobject on insurance coverages now includes a nullablepostal_codefield. - [v3.1] Appointment
booking_detailsnow includes four UTM fields, taken from the query parameters of the online booking link the patient used:utm_sourceutm_mediumutm_campaignutm_content- The v2 and v3.0
booking_detailsschema is unchanged.
- [v3.1] Procedure and procedure code objects now include a nullable
foreign_idfield. - [v3.1] Treatment plan procedures now include a nullable integer
priorityfield:- It's the procedure's rank within the plan, from the EHR's priority, visit or phase. Lower values come first, and it's
nullwhen the EHR assigns none. - The
proceduresarray on a treatment plan is now sorted bypriority. Procedures without a priority come last.
- It's the procedure's rank within the plan, from the EHR's priority, visit or phase. Lower values come first, and it's
- [v3.1] Procedures can now have the status
existing:- v2 and v3.0 never return procedures with this status. They're left out of the procedures endpoints, out of other resources that embed procedures (appointments, patients, ledger charges and line items, treatment plans), and out of procedure webhook payloads for subscriptions pinned to those versions.
- In v3.0,
GET /procedures/{id}for a procedure with statusexistingreturns404 Not Found.
Changed
- [v3.1] The
versionparameter onPOST /webhook_endpoints/{id}/webhook_subscriptionsis now optional and defaults tov3.1.0. - [v3.1]
appointment_updatedwebhooks for subscriptions pinned tov3.1.0now send the v3.1 appointment payload:- The payload includes
booking_details. - v3.1 subscriptions no longer receive an
appointment_updatedevent when none of the changed fields are part of the v3.1 appointment payload.
- The payload includes
- [v3.1]
procedure_createdandprocedure_updatedwebhooks for subscriptions pinned tov3.1.0now send the v3.1 procedure payload, includingforeign_id. - [v3.0] The
includequery parameter onGET /providersandGET /providers/{id}no longer appears in the API reference. Requests that pass it work the same as before. - [v2.2, v3.0, v3.1] The
foreign_idfield is now described consistently across resources in the API reference. It's the identifier NexHealth uses to match a record to its counterpart in the connected EHR, not necessarily the EHR's native record ID. Its format differs by EHR and may change, so treat it as an opaque string and don't parse it. Values returned by the API are unchanged.
Fixed
- [v2.2, v3.0, v3.1] Fixed a bug in location scoping for
GET /procedures. - [v3.1]
GET /medical_history/patient_itemsnow returns one entry per medical history item. That's the active entry, or the newest inactive one if the item has no active entry. Before, deactivating and re-adding an item could make it appear more than once. - [v2.2, v3.0, v3.1] When a request includes parameters the endpoint doesn't accept, the response
descriptionnote listing them is now more accurate for parameters inside arrays:- Each ignored parameter is listed once, with array positions shown as
[](for example,documents[].extra_param), instead of once per array element. - Only the unaccepted keys are listed, not whole array elements.
- Each ignored parameter is listed once, with array positions shown as
Removed
- [v3.1] The
includequery parameter has been removed fromGET /providersandGET /providers/{id}:locationsis now always returned.availabilitiesis no longer returned.