Manage practice group settings, access tokens, and configuration. Use the access token endpoint to generate short-lived JWTs for Hero Elements.
Hero Health Public API (1.0.0)
The Hero Health Public API enables healthtech partners to build products that leverage Hero Health's IM1-assured EMIS/TPP integrated functionality.
- Patient messaging — Send SMS, email, and NHS App messages on behalf of a practice
- Appointment booking — List available slots, create reservations, and confirm bookings
- Patient management — Register and look up patients via PDS (Personal Demographics Service)
- Webhooks — Subscribe to events such as appointment confirmations and write-to-record outcomes
- Booking & form links — Generate sharable links for patient self-service flows
- Elements — Generate access tokens for embedding pre-built Hero UI components
All endpoints require an x-api-key and x-practice-group-id header. API keys are scoped to specific functionality (messaging, booking, booking links). Contact Hero support to request your key.
Request
Create a webhook subscription for the authenticated practice group. Hero will send an HTTP POST request to the specified URL whenever the subscribed event occurs.
Available events: appointment.confirmed, appointment.cancelled, appointment.rescheduled, prescription.issued, patient.medical-record-updated, patient.added-to-sequence, write-to-record.succeeded, write-to-record.failed.
Optionally provide a signing_key to enable HMAC-SHA256 signature verification on incoming webhook requests. See the webhook security documentation for verification examples.
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/webhooks
- Staginghttps://api.staging.htech.app/v1/webhooks
- Productionhttps://api.herohealth.net/v1/webhooks
- curl
- NodeJS
- Ruby
curl -i -X POST \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/webhooks \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"description": "Notify our system when appointments are confirmed",
"event_type": "appointment.confirmed",
"signing_key": "whsec_your-secret-key-here",
"url": "https://example.com/webhooks/hero"
}'{ "id": "string", "event_type": "string", "url": "string", "signing_key": "string", "headers": { "property1": "string", "property2": "string" }, "created_at": "string", "updated_at": "string" }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/webhooks
- Staginghttps://api.staging.htech.app/v1/webhooks
- Productionhttps://api.herohealth.net/v1/webhooks
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/webhooks?event_type=string' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'{ "data": [ { … } ], "count": 0 }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/webhooks/{id}
- Staginghttps://api.staging.htech.app/v1/webhooks/{id}
- Productionhttps://api.herohealth.net/v1/webhooks/{id}
- curl
- NodeJS
- Ruby
curl -i -X DELETE \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/webhooks/{id}' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'