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.
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/slots/{id}
- Staginghttps://api.staging.htech.app/v1/slots/{id}
- Productionhttps://api.herohealth.net/v1/slots/{id}
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/slots/{id}' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'{ "id": "string", "practitioner_id": "string", "appointment_type_id": "string", "location_id": "string", "start_time": "2019-08-24T14:15:22Z", "finish_time": "2019-08-24T14:15:22Z" }
Request
Retrieve available bookable slots for the practice group. Filter by location, practitioner, appointment type, and date range.
Typical flow: List Appointment Types → List Slots (filtered) → Create Appointment → Book Appointment.
Results are paginated. Use start_date and end_date query parameters to narrow the date window.
Filter slots by location. Pass a single ID or an array of IDs.
Filter slots by practitioner. Pass a single ID or an array of IDs.
Only return slots on or after this date (ISO 8601 format).
Only return slots on or before this date (ISO 8601 format).
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/slots
- Staginghttps://api.staging.htech.app/v1/slots
- Productionhttps://api.herohealth.net/v1/slots
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/slots?location_id=7&practitioner_id=15&start_date=2026-03-15&end_date=2026-03-22&appointment_type_id=42' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/slots/availability
- Staginghttps://api.staging.htech.app/v1/slots/availability
- Productionhttps://api.herohealth.net/v1/slots/availability
- curl
- NodeJS
- Ruby
curl -i -X POST \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/slots/availability \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"practitioner_id": "string",
"appointment_type_id": "string",
"location_id": "string",
"start_time": "1989-04-11",
"duration": 0
}'{ "available": true }