> ## Documentation Index
> Fetch the complete documentation index at: https://docs.drivehealth.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Results and recordings

> Read the calls, chat sessions, transcripts, and recordings your organization owns.

## Calls

```http theme={null}
GET /api/calls?limit=25&status=completed&assistant_id=1a2b3c4d-...
GET /api/calls/3c2b1a09-8f7e-4d6c-9b8a-7d6c5b4a3f2e
Authorization: Bearer dh_your_api_key
```

The list is paginated (`count`, `next`, `previous`, `results`); the detail
route returns one record in the standard envelope. Both are scoped to your
organization, so filters cannot reach past it.

A record includes `call_id`, `protocol`, `from_number`, `to_number`,
`start_time`, `end_time`, `call_duration_seconds`, `status`, `transcript`,
`transcript_object`, `sentiment`, `who_hung_up`, `resolved`, `notes`,
`call_analysis`, and `call_recording_url`. Callers holding only
`call_logs.view_limited` see the record without its transcript, numbers,
analysis, notes, or recording URL.

## Chats

```http theme={null}
GET /api/chats/sessions?assistant_id=1a2b3c4d-...
GET /api/chats/sessions/9f8e7d6c-5b4a-4938-8271-6a5b4c3d2e1f
Authorization: Bearer dh_your_api_key
```

The same shape, for chat transcripts: a paginated list and a detail record in
the standard envelope, both scoped to your organization.

## Recordings

`call_recording_url` on a call record is the authorized URL on the current API
host:

```text theme={null}
https://<current-api-host>/api/calls/recording/<call_id>
```

```http theme={null}
GET /api/calls/recording/3c2b1a09-...
Authorization: Bearer dh_your_api_key
```

The response is the audio itself: `audio/ogg` for recordings Drive Health
stored and `audio/wav` for recordings fetched from the telephony provider, so
read the `Content-Type` header. The API builds the URL from the current request
rather than returning the environment-specific host stored when the call
ended, which keeps restored records on the environment serving them.
Authorization runs through the parent call: requesting the recording of a call
your organization does not own fetches nothing and answers `400` with
`Call record not found.`

> [!WARNING]
>
> Browser playback needs an authenticated fetch from your backend. Do not place
> the organization key in an `<audio src>` or a link. Fetch or proxy the audio
> server-side, then give the browser a short-lived URL or a blob response that
> does not expose the key.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.