Manage practice group settings, access tokens, and configuration. Use the access token endpoint to generate short-lived JWTs for Hero Elements.
API Reference
//
List Appointments
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.
Download OpenAPI description
Languages
Servers
Mock server
https://developer.herohealth.net/_mock/apis/public-api/openapi/
Staging
https://api.staging.htech.app/
Production
https://api.herohealth.net/
- 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
}'Response
application/json
{ "available": true }
Query
Enum"patient_id""patient_first_name""patient_last_name""patient_full_name""practitioner_first_name""practitioner_last_name""practitioner_full_name""appointment_template_name""appointment_source""location_name"
Enum"Hero patient led""Hero admin led""Hero booking link""Hero booking API""EMIS""Cliniko"
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v2/appointments
- Staginghttps://api.staging.htech.app/v2/appointments
- Productionhttps://api.herohealth.net/v2/appointments
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v2/appointments?page_index=string&page_size=string&order_by=patient_id&order_descending=true&patient_id=string&patient_first_name=string&patient_last_name=string&patient_full_name=string&practitioner_id=string&practitioner_first_name=string&practitioner_last_name=string&practitioner_full_name=string&location_id=string&appointment_template_name=string&location_name=string&has_been_cancelled=true&appointment_source=Hero+patient+led&start_time=string&end_time=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/v2/automated_messages
- Staginghttps://api.staging.htech.app/v2/automated_messages
- Productionhttps://api.herohealth.net/v2/automated_messages
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v2/automated_messages?page_index=string&page_size=string&orderBy=createdAt&order_descending=true&recipient_id=string&status=INVALIDATED¬ification_type=string' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'