curl --request GET \
--url https://api.healos.ai/ext-api/v1/receptionist/calls \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.healos.ai/ext-api/v1/receptionist/calls', 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/receptionist/calls"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "c0a80101-0000-4000-8000-000000000001",
"direction": "inbound",
"status": "completed",
"outcome": "message_taken",
"outcome_reason": "no_availability",
"transfer_status": "connected",
"caller_name": "Pat Example",
"from_number": "+15555550100",
"to_number": "+15555550199",
"patient_id": "700000000000000001",
"started_at": "2026-10-27T14:03:11.000Z",
"ended_at": "2026-10-27T14:07:42.000Z",
"duration_sec": 271,
"summary": "Caller asked to reschedule a follow-up with Dr. Example; no Tuesday slot was open, so a callback was requested.",
"has_recording": true,
"has_transcript": true,
"review_status": "unreviewed",
"created_at": "2026-10-27T14:07:50.000Z",
"updated_at": "2026-10-27T14:08:02.000Z"
}
],
"meta": {
"page": 123,
"limit": 123,
"total_pages": 123,
"total": 42
}
}{
"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 receptionist calls
Paginated AI Receptionist calls for your organization, newest first, with each call’s status, outcome, summary and whether a recording and transcript exist. Filter by date received (from_date, to_date), outcome, or a caller name or number. Transcripts and extracted details are on GET /receptionist/calls/. Requires the receptionist:read scope.
curl --request GET \
--url https://api.healos.ai/ext-api/v1/receptionist/calls \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.healos.ai/ext-api/v1/receptionist/calls', 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/receptionist/calls"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "c0a80101-0000-4000-8000-000000000001",
"direction": "inbound",
"status": "completed",
"outcome": "message_taken",
"outcome_reason": "no_availability",
"transfer_status": "connected",
"caller_name": "Pat Example",
"from_number": "+15555550100",
"to_number": "+15555550199",
"patient_id": "700000000000000001",
"started_at": "2026-10-27T14:03:11.000Z",
"ended_at": "2026-10-27T14:07:42.000Z",
"duration_sec": 271,
"summary": "Caller asked to reschedule a follow-up with Dr. Example; no Tuesday slot was open, so a callback was requested.",
"has_recording": true,
"has_transcript": true,
"review_status": "unreviewed",
"created_at": "2026-10-27T14:07:50.000Z",
"updated_at": "2026-10-27T14:08:02.000Z"
}
],
"meta": {
"page": 123,
"limit": 123,
"total_pages": 123,
"total": 42
}
}{
"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 | receptionist: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
- Dry run: Not needed (read-only).
created_at), which is what from_date and to_date filter on. Each item carries the status, outcome and post-call summary; the transcript and extracted details are on Get a receptionist call, and the audio on Download a call recording.
The id is the same call_id the post-call webhook sends, so you can use the webhook as the trigger and this endpoint to fetch the rest.
Guide: Receptionist call transcripts. Errors: Error catalog.Authorizations
API key obtained from /api/v1/ext-api-keys
Query Parameters
Page number, from 1.
^\d+$"1"
Results per page, 1-100 (default 20). Larger values are treated as 100.
^\d+$"20"
Only calls received at or after this instant (ISO 8601). A date without a time means the start of that day in UTC.
"2026-10-27"
Only calls received at or before this instant (ISO 8601). A date without a time means the start of that day in UTC, so use the next day or add a time to include a whole day.
"2026-10-28T23:59:59Z"
Comma-separated call outcomes to include. One or more of: booked, rescheduled, cancelled, could_not_book, transferred, transferred_connected, transferred_not_answered, transferred_unknown, question_answered, message_taken, hung_up, other, not_recorded. An unknown value is a 400.
"message_taken,could_not_book"
Caller name or phone number to search for.
100"555-0100"
Was this page helpful?

