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.
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/tasks/{id}
- Staginghttps://api.staging.htech.app/v1/tasks/{id}
- Productionhttps://api.herohealth.net/v1/tasks/{id}
- curl
- NodeJS
- Ruby
curl -i -X PATCH \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/tasks/{id}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"status": "open",
"priority": "lowest",
"assignee_type": "admin",
"assignee_id": "string"
}'Response
application/json
{ "data": { "id": "string" } }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v2/tasks/{id}
- Staginghttps://api.staging.htech.app/v2/tasks/{id}
- Productionhttps://api.herohealth.net/v2/tasks/{id}
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v2/tasks/{id}' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'Response
application/json
{ "id": "string", "type_label": "string", "status": "open", "details": "string", "category": "string", "patient": { "id": "string", "uid": "string", "ehr_partner_id": "string", "emis_id": "string", "deceased_at": "2019-08-24T14:15:22Z", "dob": "2019-08-24T14:15:22Z", "title": "string", "first_name": "string", "last_name": "string", "sex": "unspecified", "nhs_number": "string", "email": "string", "mobile": "string", "last_sync_at": "2019-08-24T14:15:22Z", "full_name": "string", "contact_emails": [ … ], "registered_practitioner_name": "string", "notes": "string", "membership_scheme_names": [ … ], "address": { … }, "verification_credentials_list": [ … ] }, "form_response": { "id": 0, "form_id": 0, "client_id": 0, "appointment_id": 0, "invoice_id": 0, "practice_group_id": 0, "created_at": "2019-08-24T14:15:22Z", "updated_at": "string", "hidden": true, "emis_file_record_at": "string", "short_link_id": 0, "admin_id": 0, "write_to_record_error": "string", "title": "string", "submitted_at": "string", "form_questions_responses": [ … ], "form": { … }, "write_to_record_status": "string" }, "appointment": { "id": "string", "location_id": "string", "start_time": "2019-08-24T14:15:22Z", "reserved_until": "2019-08-24T14:15:22Z", "booking_confirmed_at": "2019-08-24T14:15:22Z", "can_be_cancelled": false, "can_be_rescheduled": false, "cancellation_policy_hours": 0, "appointment_template_name": "string", "cancelled_at": "2019-08-24T14:15:22Z", "confirmed_at": "2019-08-24T14:15:22Z", "appointment_source": "string", "video": false, "in_person": false, "telephone": false, "location_name": "string", "service": "string", "source": "string", "status": "string", "appointment_type_id": "string", "duration": 0, "patient_uid": "string", "practitioner_id": "string", "created_at": "string", "reason": "string", "practitioner_name": "string", "communication_method": "string", "video_url": "string", "rescheduled_at": "string" }, "communication": { "id": "string", "content": "string", "contact_method": "email", "write_to_record_timestamp": "string", "write_to_record_error": "string", "notification": { … } }, "note": { "id": 0, "description": "string", "admin": { … }, "practice_group_id": 0, "archived_at": "string", "created_at": "string", "updated_at": "string" }, "assignee_id": "string", "assignee_type": "string", "assignee_name": "string", "priority": "lowest", "created_at": "string", "title": "string", "title_sub_text": "string", "name": "string", "taskable_type": "string", "triggered_by": { "id": "string", "type": "Admin", "name": "string" }, "system_alert_details": { "title": "string", "message": "string", "sub_title": "string", "action": "string" }, "form_response_id": "string", "communication_id": "string", "appointment_id": "string", "note_id": "string" }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v2/tasks
- Staginghttps://api.staging.htech.app/v2/tasks
- Productionhttps://api.herohealth.net/v2/tasks
- curl
- NodeJS
- Ruby
curl -i -X GET \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v2/tasks?page_index=0&page_size=0&assignee_id%5B%5D=string&assignee_type%5B%5D=Admin&status%5B%5D=open&priority%5B%5D=lowest&order_by%5B%5D=created_at&order_descending%5B%5D=string' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE'