HearLink API (1.0.0)

Download OpenAPI specification:

License: MIT

Programmatic access to HearLink services.

Patients

Manage patient records.

Get a patient

Retrieves a single patient by UID.

Authorizations:
ApiKeyAuth
path Parameters
uid
required
string <uuid>

The patient UID.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

List or search patients

Returns a list of patients for the authenticated organisation. Supports three mutually exclusive modes: List mode (no filter params): Returns all patients ordered by created date descending, paginated. External ID lookup (externalSystemId only): Returns 0 or 1 result matching the given external system ID. Search (exactly one of query, phoneNumber, or emailAddress): Returns up to 50 results. Optionally combine with dob to post-filter results. query is a free-text search over name, contact details and address, and tolerates misspellings and partial words in the name and address only. phoneNumber and emailAddress are exact lookups. A phone number matches whichever way it was written, in national or international form, but a partial or mistyped number returns nothing rather than a near match. Limitations: - dob filtering may miss matches whose name ranks outside the top 50 hits.

Authorizations:
ApiKeyAuth
query Parameters
query
string

Free-text search over name, contact details and address. Misspellings and partial words are tolerated in the name and address only.

phoneNumber
string

Phone number lookup. Normalised to digits-only before search (fuzzy lookup mode).

emailAddress
string <email>

Email address lookup, case-insensitive (fuzzy lookup mode).

externalSystemId
string

Exact lookup by external system ID. Mutually exclusive with all other filters.

dob
string^\d{4}-\d{2}-\d{2}$

Date of birth in YYYY-MM-DD format. Used as an additional post-filter when combined with query, phoneNumber, or emailAddress. Not valid on its own.

cursor
string

Opaque pagination cursor from a previous response. List mode only.

limit
integer [ 1 .. 200 ]
Default: 100

Number of results per page. List mode only.

Responses

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "data": [
    ],
  • "nextCursor": "eyJjcmVhdGVkQXQiOjE3NDg5MDg4MDAwMDAsInVpZCI6ImFiYy0xMjMifQ=="
}

Create a patient

Creates a new patient.
Field groups (exactly one required per group): - referralId or referralName - primaryClinicId or primaryClinicName - statusId or statusName

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
title
string
fullName
required
string non-empty
object (Address)

Patient address details

referralId
string

Provide exactly one of referralId or referralName

referralName
string

Provide exactly one of referralId or referralName

primaryClinicId
string

Provide exactly one of primaryClinicId or primaryClinicName

primaryClinicName
string

Provide exactly one of primaryClinicId or primaryClinicName

statusId
string

Provide exactly one of statusId or statusName

statusName
string

Provide exactly one of statusId or statusName

secondaryStatusId
string

Optional sub-status key within the chosen status's sub-workflow.

secondaryStatusName
string

Optional sub-status name within the chosen status's sub-workflow.

primaryPhoneNumber
required
string non-empty
secondaryPhoneNumber
string
emailAddress
string <email>
dob
string^\d{4}-\d{2}-\d{2}$

Optional date of birth in YYYY-MM-DD format

age
integer >= 0
gender
string
notes
string
required
object (Tracking)

Tracking/marketing information

Responses

Request samples

Content type
application/json
{
  • "fullName": "John Smith",
  • "primaryPhoneNumber": "07123456789",
  • "emailAddress": "[email protected]",
  • "dob": "1985-07-12",
  • "statusName": "Patient Created",
  • "primaryClinicName": "Manchester",
  • "referralName": "Facebook",
  • "tracking": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Appointments

Read appointment records.

Get appointment availability

Returns bookable time slots for a given appointment type and clinic over a date range. Dates with no bookable slots are omitted from the response. The date range must not exceed 62 days and from must be today or later in the organisation's timezone.

Authorizations:
ApiKeyAuth
query Parameters
from
required
string^\d{4}-\d{2}-\d{2}$

Inclusive start date in YYYY-MM-DD format. Must be today or later.

to
required
string^\d{4}-\d{2}-\d{2}$

Inclusive end date in YYYY-MM-DD format. Must be on or after from. The range must not exceed 62 days.

appointmentTypeId
required
string <uuid>

UID of the appointment type to check availability for.

clinicId
required
string <uuid>

UID of the clinic to check availability for.

assigneeId
string

Optional. When supplied, only slots where this clinician is available are returned.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

List appointments

Returns a paginated list of appointments filtered by a required date range plus optional filters. Date strings are interpreted in the organisation's configured timezone. Results are sorted by startDateTime ascending.

Pagination: keep requesting with the returned nextCursor until the response omits nextCursor.

Authorizations:
ApiKeyAuth
query Parameters
from
required
string^\d{4}-\d{2}-\d{2}$

Inclusive lower bound on startDateTime, in YYYY-MM-DD format.

to
required
string^\d{4}-\d{2}-\d{2}$

Inclusive upper bound on startDateTime (treated as end-of-day), in YYYY-MM-DD format. Must be ≥ from. Maximum range is 92 days.

appointmentTypeId
string <uuid>

Filter by appointment type UID.

assigneeId
string

Filter by assigned user UID.

clinicId
string <uuid>

Filter by clinic UID.

patientId
string <uuid>

Filter by patient UID.

cursor
string

Opaque pagination token from the previous response's nextCursor.

limit
integer [ 1 .. 200 ]
Default: 100

Maximum number of results per page. Defaults to 100. Values above 200 are clamped to 200. Values below 1 return a 400 error.

Responses

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "data": [
    ],
  • "nextCursor": "eyJzdGFydERhdGVUaW1lTXMiOjE3NDcwNDA0MDAwMDAsInVpZCI6ImQyOTBmMWVlLTZjNTQtNGIwMS05MGU2LWQ3MDE3NDhmMDg1MSJ9"
}

Get an appointment

Retrieves a single appointment by UID.

Authorizations:
ApiKeyAuth
path Parameters
uid
required
string <uuid>

The appointment UID.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Update an appointment

Updates an appointment. Any subset of fields may be supplied. Supplying any of appointmentTypeId, clinicId, assigneeId, date, start, end, or location reschedules the appointment and re-runs full availability validation (calendar working hours, enabled days, appointment-type blockouts, assignee eligibility, and schedule location matching); omitted reschedule fields retain their current value. Status fields (cancelled, confirmed, arrived, noShow, checkedOut, outcome, additionalNote) are applied directly. Times are interpreted in the organisation's configured timezone.

Authorizations:
ApiKeyAuth
path Parameters
uid
required
string <uuid>

The appointment UID.

Request Body schema: application/json
required
non-empty
appointmentTypeId
string <uuid>
clinicId
string <uuid>
assigneeId
string

ID of the user the appointment is assigned to.

date
string^\d{4}-\d{2}-\d{2}$

Appointment date in YYYY-MM-DD format.

start
string^\d{2}:\d{2}$

Start time in 24-hour HH:mm format.

end
string^\d{2}:\d{2}$

End time in 24-hour HH:mm format. Must be after the effective start time.

location
string
Enum: "clinic" "home"
additionalNote
string
referralId
string <uuid>
cancelled
boolean
confirmed
boolean
arrived
boolean
noShow
boolean
checkedOut
boolean
outcome
string

Must be a valid outcome key configured on the appointment type.

Responses

Request samples

Content type
application/json
Example
{
  • "date": "2026-05-14",
  • "start": "10:00",
  • "end": "10:45"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Delete an appointment

Permanently deletes an appointment. This also tears down any scheduled reminders and communication automations and regenerates online-booking availability for the slot.

Authorizations:
ApiKeyAuth
path Parameters
uid
required
string <uuid>

The appointment UID.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create an appointment

Creates a new appointment. The patient, appointment type, clinic, assignee, and (optional) referral must already exist.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
patientId
required
string <uuid>
appointmentTypeId
required
string <uuid>
clinicId
required
string <uuid>
assigneeId
required
string

ID of the user the appointment is assigned to.

date
required
string^\d{4}-\d{2}-\d{2}$

Appointment date in YYYY-MM-DD format.

start
required
string^\d{2}:\d{2}$

Start time in 24-hour HH:mm format.

end
required
string^\d{2}:\d{2}$

End time in 24-hour HH:mm format. Must be after start.

location
required
string
Enum: "clinic" "home"
additionalNote
string
referralId
string <uuid>
sendConfirmation
boolean
Default: false

Whether to send a confirmation email/SMS to the patient, subject to the appointment type's confirmation settings.

Responses

Request samples

Content type
application/json
{
  • "patientId": "8d1e3d17-60a9-4b92-bf0b-4c0a4a0d3a15",
  • "appointmentTypeId": "2a5f9a91-9c3b-4f78-9f5e-2f22d6a0e4c1",
  • "clinicId": "a5f1b2c3-d4e5-6789-abcd-ef0123456789",
  • "assigneeId": "FVbzVLPvg1ONRXJgFuiktmNhsrb2",
  • "date": "2026-05-12",
  • "start": "09:00",
  • "end": "09:45",
  • "location": "clinic",
  • "sendConfirmation": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Invoices

Read invoice records.

Get an invoice

Retrieves a single invoice by UID.

Authorizations:
ApiKeyAuth
path Parameters
uid
required
string <uuid>

The invoice UID.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Clinics

Discover the clinics belonging to your organisation.

List clinics

Returns a paginated list of the authenticated organisation's clinics, sorted by name ascending. Deleted clinics are excluded. Use this to discover the clinic identifiers required by the availability and appointment create endpoints.

Any valid, active API key for the organisation may call this endpoint — no additional permissions are required.

Pagination: keep requesting with the returned nextCursor until the response omits nextCursor.

Authorizations:
ApiKeyAuth
query Parameters
cursor
string

Opaque pagination token from the previous response's nextCursor.

limit
integer [ 1 .. 200 ]
Default: 100

Maximum number of results per page. Defaults to 100. Values above 200 are clamped to 200. Values below 1 return a 400 error.

Responses

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "data": [
    ],
  • "nextCursor": "eyJuYW1lIjoiQXNoZm9yZCBDbGluaWMiLCJ1aWQiOiJhNWYxYjJjMy1kNGU1LTY3ODktYWJjZC1lZjAxMjM0NTY3ODkifQ"
}

Appointment types

Discover the appointment types belonging to your organisation.

List appointment types

Returns a paginated list of the authenticated organisation's appointment types, sorted by name ascending. Deleted types are excluded. Use this to discover the appointment type identifiers required by the availability and appointment create endpoints, and the duration that determines how long each appointment runs.

Requires an API key whose user holds appointment_types:browse, or organisation:owner.

This is a broader set than /online-booking/config returns. That endpoint lists only the types an organisation has enabled for online booking, whereas this lists every type the organisation uses, including internal ones. Both are accepted by /appointments/availability. If you are building a patient-facing booking journey, prefer the config endpoint so you only offer types the organisation intends patients to see.

A type listed here may return no availability at a given clinic. An appointment type can be disabled for a specific clinic, and a clinic accepts online bookings only on certain weekdays. This endpoint returns types without that clinic context — /online-booking/config reports the per-clinic rules if you need them.

Pagination: keep requesting with the returned nextCursor until the response omits nextCursor.

Authorizations:
ApiKeyAuth
query Parameters
cursor
string

Opaque pagination token from the previous response's nextCursor.

limit
integer [ 1 .. 200 ]
Default: 100

Maximum number of results per page. Defaults to 100. Values above 200 are clamped to 200. Values below 1 return a 400 error.

Responses

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "data": [
    ]
}

Staff

Discover the clinicians who can be booked at your organisation.

List bookable staff

Returns a paginated list of the authenticated organisation's bookable staff, sorted by name ascending. Use this to discover the clinician identifiers accepted as assigneeId by the availability endpoint and as consultantId when creating an online booking — for example to build a "choose your clinician" step.

Requires an API key whose user holds users:read, or organisation:owner.

Staff means clinicians who can hold an appointment, not every user. A user appears here only if they are assignable to at least one live appointment type, so administrators and other non-clinical staff are excluded. Removing someone from every appointment type removes them from this list.

Being listed here does not guarantee bookable slots. Availability also depends on the clinician's schedule and working locations, so a clinician listed here may return no slots at a particular clinic or on a particular date. Treat this as a directory for display, and /appointments/availability — whose response names the consultants free for each slot — as the authority on who can actually be booked.

Only an identifier and a name are returned. No contact details or other personal information about staff are exposed.

Pagination: keep requesting with the returned nextCursor until the response omits nextCursor.

Authorizations:
ApiKeyAuth
query Parameters
cursor
string

Opaque pagination token from the previous response's nextCursor.

limit
integer [ 1 .. 200 ]
Default: 100

Maximum number of results per page. Defaults to 100. Values above 200 are clamped to 200. Values below 1 return a 400 error.

Responses

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "data": [
    ]
}

Online booking

Build your own patient-facing booking experience. Retrieve the organisation's bookable configuration, then check availability and create bookings.

Get online booking configuration

Returns everything needed to build a patient-facing booking journey for the authenticated organisation: the clinics and appointment types that are bookable online, the consultants who can be booked, the patient details the organisation requires, and the organisation's timezone.

Any valid, active API key for the organisation may call this endpoint — no additional permissions are required.

Use this rather than /clinics to build a booking UI. /clinics returns every clinic in the organisation, including those excluded from online booking. This endpoint returns only the bookable set, so the combinations it offers are the combinations /appointments/availability will accept. A clinic or appointment type absent here cannot be booked online.

This is a server-to-server endpoint. API keys must never be exposed in browser JavaScript, so call it from your own backend and proxy the result to your front-end.

Slot times returned by /appointments/availability are in the timezone given here — use it when rendering times to patients.

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "data": {
    }
}

Create an online booking

Creates a patient appointment in a single call. The booker is matched against existing patients using the organisation's own matching rules — name, phone number, email, date of birth and address — and is attached to the match if one is found, or created as a new patient if not. The patient and the appointment are written together, so a rejected request never leaves a partial record behind.

Requires an API key whose user holds both appointments:create and patients:create, or organisation:owner.

Call /online-booking/config first. It tells you which clinics, appointment types and consultants are bookable, which patient details this organisation requires, and which appointment types require payment and therefore cannot be booked here. Then call /appointments/availability to get a date and slot, and pass one of that slot's availableConsultants as consultantId.

Appointment length is taken from the appointment type, not from the request.

Slot availability is not re-checked at write time. If the slot was taken between your availability call and this one, the booking is still created. Fetch availability immediately before booking, and note that a retried request creates a second booking — there is no idempotency key.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
clinicId
required
string <uuid>

Must be a clinic returned by /online-booking/config.

appointmentTypeId
required
string <uuid>

Must be an appointment type returned by /online-booking/config that is not flagged requiresPayment.

consultantId
required
string

Must be assignable to the appointment type. Use one of the slot's availableConsultants from /appointments/availability.

date
required
string^\d{4}-\d{2}-\d{2}$

Slot date in YYYY-MM-DD, in the organisation's timezone.

slot
required
string^\d{2}:\d{2}$

Slot start time in HH:mm, in the organisation's timezone.

fullName
required
string non-empty
phoneNumber
required
string non-empty
emailAddress
string <email>
dob
string^\d{4}-\d{2}-\d{2}$

Date of birth in YYYY-MM-DD. Rejected if the organisation sets a minimum patient age and the booker is younger.

object
gender
string
gpDetails
string
referral
string <uuid>

Must be one of the referralOptions from /online-booking/config.

additionalNote
string
gclid
string

Google click identifier, stored against the patient for attribution.

sendConfirmation
boolean

Whether HearLink sends the patient its own booking confirmation. Defaults to the appointment type's configured behaviour — note this differs from /appointments/create, which defaults to false. Set false when you send your own confirmation, to avoid the patient receiving two and the organisation paying for a duplicate SMS. Appointment reminders are unaffected and are still sent.

Responses

Request samples

Content type
application/json
Example
{
  • "clinicId": "a5f1b2c3-d4e5-6789-abcd-ef0123456789",
  • "appointmentTypeId": "3f6c1d90-8b2a-4e77-9c31-5a8d2f0e1b44",
  • "consultantId": "c79f61b0-1dbb-4f2d-9a4e-e0b2f66b9a34",
  • "date": "2026-09-14",
  • "slot": "10:30",
  • "fullName": "Alex Taylor",
  • "phoneNumber": "07700 900000"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Webhooks

Webhooks send real-time HTTP POST notifications to a URL you configure whenever events occur in HearLink.

Envelope

Every delivery wraps entity data in a standard envelope:

{
  "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  "type": "patient.created",
  "createdAt": "2026-04-10T14:30:00.000Z",
  "data": { ... }
}

Headers

Header Description
X-HearLink-Signature t=<unix>,v1=<hmac-sha256> — verify authenticity
X-HearLink-Event The event type, e.g. patient.created
X-HearLink-Delivery Unique ID for this delivery attempt

Signature verification

Compute HMAC-SHA256(secret, "{timestamp}.{raw_body}") and compare to the v1 value.

Node.js example:

const crypto = require('crypto');

function verifySignature(rawBody, secret, signatureHeader) {
  const [tPart, v1Part] = signatureHeader.split(',');
  const timestamp = tPart.replace('t=', '');
  const expected = v1Part.replace('v1=', '');
  const computed = crypto
    .createHmac('sha256', secret)
    .update(`${timestamp}.${rawBody}`)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(computed),
    Buffer.from(expected),
  );
}

Retries

Failed deliveries (non-2xx or timeout after 30s) are retried up to 5 times with exponential back-off. After 50 consecutive failures across any events, the webhook is automatically disabled.

Data notes

  • All timestamps are ISO 8601 strings.

Patient Created Webhook

Fired when a new patient record is created.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Patient Updated Webhook

Fired when a patient record is modified.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Patient Deleted Webhook

Fired when a patient record is deleted.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Appointment Created Webhook

Fired when a new appointment is created.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Appointment Updated Webhook

Fired when an appointment is modified (including status changes like confirmed, cancelled, arrived, no-show).

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Appointment Deleted Webhook

Fired when an appointment is deleted.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Invoice Created Webhook

Fired when a new invoice is created.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Invoice Updated Webhook

Fired when an invoice is modified.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Invoice Deleted Webhook

Fired when an invoice is deleted.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Transaction Created Webhook

Fired when a new transaction (payment or refund) is created.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Transaction Updated Webhook

Fired when a transaction is modified.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Transaction Deleted Webhook

Fired when a transaction is deleted.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Credit Note Created Webhook

Fired when a new credit note is created.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Credit Note Updated Webhook

Fired when a credit note is modified.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Credit Note Deleted Webhook

Fired when a credit note is deleted.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Hearing Test Created Webhook

Fired when a new hearing test is recorded.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Hearing Test Updated Webhook

Fired when a hearing test is modified.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Hearing Test Deleted Webhook

Fired when a hearing test is deleted.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Test Event Webhook

Sent when a user clicks the "Test" button in the portal. Not subscribable — always delivered to the webhook being tested.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
id
required
string

Unique event ID prefixed with evt_.

type
required
string

The event type.

createdAt
required
string <date-time>

ISO 8601 timestamp of when the event was created.

required
object

The entity payload. Shape varies by event type.

Responses

Request samples

Content type
application/json
{
  • "id": "evt_d290f1ee-6c54-4b01-90e6-d701748f0851",
  • "type": "patient.created",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}