curl --request GET \
--url https://api.healos.ai/ext-api/v1/audit-events \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.healos.ai/ext-api/v1/audit-events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.healos.ai/ext-api/v1/audit-events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "<string>",
"created_at": "<string>",
"key_id": "<string>",
"user_id": "<string>",
"request_id": "<string>",
"method": "GET",
"route": "/patients/{patientId}",
"resource_type": "patient",
"resource_id": "<string>",
"status": 200
}
],
"meta": {
"limit": 123,
"next_cursor": "<string>"
}
}{
"error": "<string>",
"details": {}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "Rate limit exceeded. Please retry after the window resets.",
"code": "daily_cap_reached",
"reset_at": "2026-10-28T00:00:00.000Z"
}List audit events
Your organization’s API audit trail, newest first: one event per authenticated request (one per record when a request names two), with the key, route, record ids and status. Never request or response content. Events are kept for 90 days.
curl --request GET \
--url https://api.healos.ai/ext-api/v1/audit-events \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.healos.ai/ext-api/v1/audit-events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.healos.ai/ext-api/v1/audit-events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "<string>",
"created_at": "<string>",
"key_id": "<string>",
"user_id": "<string>",
"request_id": "<string>",
"method": "GET",
"route": "/patients/{patientId}",
"resource_type": "patient",
"resource_id": "<string>",
"status": 200
}
],
"meta": {
"limit": 123,
"next_cursor": "<string>"
}
}{
"error": "<string>",
"details": {}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "Rate limit exceeded. Please retry after the window resets.",
"code": "daily_cap_reached",
"reset_at": "2026-10-28T00:00:00.000Z"
}| Requirement | Detail |
|---|---|
| Scope | audit:read |
| Rate limit | About 60 requests per minute per API key (shared by all endpoints; approximate) |
| Cost | Free |
- Writes data: No
- Safe to retry: Yes
- Contacts an outside system: None. Reads your organization’s API audit log in HealOS.
- Dry run: Not needed (read-only).
/patients/{patientId}), never request bodies, query values or record contents. Every row belongs to the calling key’s own organization.
Narrow the list with key_id, resource_type and resource_id, or a since / until window. For the next (older) page, pass the previous page’s meta.next_cursor as cursor. Rows can take a few seconds to appear: HealOS writes them in batches.
From the CLI: healos audit list. Errors: Error catalog.Authorizations
API key obtained from /api/v1/ext-api-keys
Query Parameters
Only events from this API key (its id, from the API Keys page).
Only events about this kind of record: patient, document, appointment, provider, note, session, eligibility_check, prior_auth_request or ehr_action.
^[a-z_]{1,48}$"patient"
Only events about this record id. Combine with resource_type.
^[A-Za-z0-9_.:-]{1,64}$Events at or after this time (ISO 8601).
"2026-10-01T00:00:00Z"
Events before this time (ISO 8601).
Events per page, 1-200 (default 50).
^\d+$"50"
meta.next_cursor from the previous page. Omit for the newest events.
^[1-9]\d{0,18}$Was this page helpful?

