Making Requests
Every call to the Healos External API follows the same pattern. Read this once, and the rest of the API Reference is just details.Request Anatomy
- Base URL:
https://api.healos.ai/ext-api/v1(orhttp://localhost:8787/ext-api/v1in local development). X-API-Keyis required on every request. See Authentication.Content-Type: application/jsonis required forPOST,PATCH, andPUT.
Your First Call — List Patients
Patient
id is a BigInt serialized as a string. Always treat it as an
opaque string — don’t parse it as a number, and don’t assume a length.Pagination
List endpoints acceptpage and limit query parameters. Defaults are
page=1 and limit=20. Use meta.total_pages to know when you’ve reached
the end.
Creating a Resource
Write endpoints take a JSON body. The schema for each body is in the API Reference — stick to the documented fields. Extra fields are rejected with a400 validation error.
201 Created):
POST, PATCH, and DELETE require a *:write scope for the resource.
A key without it gets a 403. See Authentication → Scopes.Reading One Resource By ID
A
404 on a specific ID may mean the resource does not exist or
belongs to another user. This is intentional — see Error Handling.External IDs
Patients, appointments, and documents accept an optionalexternal_id on
create — a caller-supplied identifier (up to 255 characters) that lets you
correlate Healos records with rows in your own system without storing the
Healos id.
external_id is unique per organization and immutable once set:
-
Sending
external_idonPATCHis silently ignored. -
Sending a value another record in the same org already uses returns
409 Conflictwith the existing record so you can reconcile:
multipart/form-data), pass external_id as a form
field alongside file and patient_id.
Lookup by external_id
List endpoints acceptexternal_id=<value> as a query parameter. The
response is the standard list shape — a one-item data array on hit, or
404 on miss — so you can use the same client code as paginated listing.
Documents are scoped to a patient, so the lookup path is
/patients/{patientId}/documents?external_id=....Handling Responses
Every response carries
X-RateLimit-Limit, X-RateLimit-Remaining, and
X-RateLimit-Reset so you can pace yourself without waiting for a 429.
Next Steps
API Reference
Full endpoint listing with request and response schemas
Authentication
API keys, scopes, and security best practices

