Manage practice group settings, access tokens, and configuration. Use the access token endpoint to generate short-lived JWTs for Hero Elements.
API Reference
//
List Practice Group Eleme...
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/locations
- Staginghttps://api.staging.htech.app/v1/locations
- Productionhttps://api.herohealth.net/v1/locations
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/locations?appointment_type_ids=string&has_availability=true' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'Response
application/json
{ "data": [ { … } ], "count": 0 }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/me/elements
- Staginghttps://api.staging.htech.app/v1/me/elements
- Productionhttps://api.herohealth.net/v1/me/elements
- curl
- NodeJS
- Ruby
curl -i -X GET \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/me/elements \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'Response
application/json
{ "data": [ { … } ], "count": 0 }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/me
- Staginghttps://api.staging.htech.app/v1/me
- Productionhttps://api.herohealth.net/v1/me
- curl
- NodeJS
- Ruby
curl -i -X GET \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/me \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'Response
application/json
{ "id": "string", "name": "string", "sector": "nhs", "write_to_record": true, "ehr_partner": "emis", "ehr_partner_enabled": true, "ehr_partner_settings": { "emis_ip_address": "string", "emis_ip_address_internal": "string", "emis_supplier_id": "string", "emis_username": "string", "emis_orgid": "string", "emis_user_id": "string", "emis_password": "string" }, "custom_slot_to_slot": true, "use_partner_bookable_slots": true, "data_source_priorities": [ "hero" ], "js_booking_service": true, "prescription_partner_enabled": true, "prescription_partner": "signature_rx", "prescription_partner_credentials": { "email": "string" }, "address": { "line_1": "string", "postcode": "string", "line_2": "string", "line_3": "string", "town": "string", "county": "string", "country": "string" }, "authenticated_as": { "id": "string", "first_name": "string", "last_name": "string", "email": "string", "external_prescriber_id": "string", "signature": "string", "linked_practitioners_id": "string", "preferences": { … }, "team_memberships": [ … ] } }