Documentation Index
Fetch the complete documentation index at: https://docs.healos.ai/llms.txt
Use this file to discover all available pages before exploring further.
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
| Status | What it means | Where to look |
|---|---|---|
2xx | Success. Body is { "data": ... }, list endpoints also include meta. | — |
400 | Validation error. Body includes a details map of field errors. | Error Handling |
401 | Missing, invalid, expired, or revoked key. | Authentication |
403 | Key is valid but lacks the required scope. | Authentication → Scopes |
404 | Resource not found (or not yours). | Error Handling |
429 | Rate limit exceeded. Honor the Retry-After header. | Rate Limiting |
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