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 integrate with NHS GP practices connected to EMIS Web and TPP SystmOne.
- 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/count
- Staginghttps://api.staging.htech.app/v1/slots/count
- Productionhttps://api.herohealth.net/v1/slots/count
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/slots/count?appointment_type_id=string&location_id=string&practitioner_id=string&start_date=string&end_date=string' \
-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/{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'