Sync Appointments (Inbound)
Push appointment data from your EHR to Insight Health whenever appointments are created, updated, or cancelled.
- Direction: Your EHR → Insight Health
- Method:
POST /v2/webhooks/{ehr}/sync-appointments
Replace {ehr} with your assigned EHR identifier (e.g., nexus, medicat).
Headers
| Property | Type | Description |
|---|---|---|
Content-Type* | string | Must be application/json. |
X-API-Key* | string | Your API key. |
X-Webhook-Signature* | string | HMAC-SHA256 signature formatted as sha256=<hex>. See Authentication. |
* Required field
Request body
The top-level payload contains an appointments array. Each entry groups an appointment with its associated patient, practitioner, location, and encounter.
{
"appointments": [
{
"appointment": { ... },
"patient": { ... },
"practitioner": { ... },
"location": { ... },
"encounter": { ... },
"department_id": "dept-01"
}
]
}You can also send a single object with an appointment key at the top level
without wrapping it in an appointments array. It will be processed as a
single-item batch.
appointment
| Property | Type | Description |
|---|---|---|
id* | string | Unique appointment ID in your EHR. |
status* | string | Appointment status. See Status Reference for accepted values. |
start_time* | string | Appointment start date and time. Format: MM/DD/YYYY HH:MM. |
start_date* | string | Appointment date only. Format: MM/DD/YYYY. |
created_time* | string | When the appointment was originally scheduled. Format: MM/DD/YYYY HH:MM. |
type* | string | Appointment or visit type (e.g., "Follow-up", "New Patient"). |
duration | string | Duration in minutes (e.g., "30"). |
reason | string | Reason for the appointment or chief complaint. |
notes | string | Free-text scheduling notes. |
* Required field
patient
| Property | Type | Description |
|---|---|---|
id* | string | Unique patient ID in your EHR. |
first_name* | string | Patient's first name. |
last_name* | string | Patient's last name. |
birth_date* | string | Date of birth. Format: MM/DD/YYYY. |
gender* | string | Patient gender (e.g., "Male", "Female", "Other"). |
middle_name | string | Patient's middle name. |
phone | string | Patient's phone number. |
email | string | Patient's email address. |
* Required field
practitioner
| Property | Type | Description |
|---|---|---|
id* | string | Unique provider or practitioner ID in your EHR. |
first_name* | string | Practitioner's first name. |
last_name* | string | Practitioner's last name. |
* Required field
location
| Property | Type | Description |
|---|---|---|
name | string | Name of the clinic or location (e.g., "Main Clinic"). |
* Required field
encounter
| Property | Type | Description |
|---|---|---|
id | string | Encounter or visit ID in your EHR. |
reason | string | Clinical reason for the encounter. |
* Required field
Top-level fields
| Property | Type | Description |
|---|---|---|
department_id | string | Department or location ID. |
* Required field
Full request example
{
"appointments": [
{
"appointment": {
"id": "apt-12345",
"status": "booked",
"start_time": "03/10/2026 14:30",
"start_date": "03/10/2026",
"created_time": "03/01/2026 09:00",
"duration": "30",
"type": "Follow-up",
"reason": "Post-surgery check",
"notes": ""
},
"patient": {
"id": "pat-67890",
"first_name": "Jane",
"middle_name": "Marie",
"last_name": "Doe",
"birth_date": "05/15/1990",
"gender": "Female",
"phone": "555-123-4567",
"email": "jane.doe@example.com"
},
"practitioner": {
"id": "prov-111",
"first_name": "John",
"last_name": "Smith"
},
"location": {
"name": "Main Clinic"
},
"encounter": {
"id": "enc-999",
"reason": "Post-surgery follow-up"
},
"department_id": "dept-01"
}
]
}Success response
{
"message": "Appointments synced successfully",
"success": true,
"code": 200
}When to call this API
- A new appointment is created in your EHR.
- An existing appointment is updated (rescheduled, status changed).
- An appointment is cancelled or marked as no-show.
- You may batch multiple appointments in a single request.
Last updated on