Manage practice group settings, access tokens, and configuration. Use the access token endpoint to generate short-lived JWTs for Hero Elements.
- Create an Attachment Link
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.
File ID retrieved from List Patient Attachments endpoint. If not provided, file_data must be provided.
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/attachment_links
- Staginghttps://api.staging.htech.app/v1/attachment_links
- Productionhttps://api.herohealth.net/v1/attachment_links
- curl
- NodeJS
- Ruby
curl -i -X POST \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/attachment_links \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"expiry_date": "1989-04-11",
"ehr_file_id": "string",
"file_data": "string",
"file_name": "string",
"patient_id": "string",
"maximum_use_count": 1
}'{ "attachment_link": "string", "attachment_uuid": "string" }
Request
Create a booking link that can be shared with a patient. The link allows the patient to self-book into an available appointment slot.
Booking links are tied to a specific patient and appointment type. The generated URL can be sent via SMS or email using the Send Message endpoint.
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/booking_links
- Staginghttps://api.staging.htech.app/v1/booking_links
- Productionhttps://api.herohealth.net/v1/booking_links
- curl
- NodeJS
- Ruby
curl -i -X POST \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/booking_links \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"slot_id": "string",
"appointment_type_id": "string",
"location_id": "string",
"patient_id": "string",
"practitioner_id": "string",
"from_date": "1989-04-11",
"to_date": "1989-04-11",
"expiry_date": "1989-04-11",
"maximum_use_count": 1,
"link_name": "string"
}'{ "booking_link": "string", "short_link_id": "string" }
Display only the slots available after this date
Display only the slots available before this date
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/booking_links/{id}
- Staginghttps://api.staging.htech.app/v1/booking_links/{id}
- Productionhttps://api.herohealth.net/v1/booking_links/{id}
- curl
- NodeJS
- Ruby
curl -i -X PATCH \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/booking_links/{id}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"appointment_type_id": "string",
"location_id": "string",
"practitioner_id": "string",
"expiry_date": "1989-04-11",
"maximum_use_count": 1,
"from_date": "1989-04-11",
"to_date": "1989-04-11",
"active": true,
"link_name": "string"
}'{ "booking_link": "string", "short_link_id": "string" }