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

# Download a Recording File

> Stream the raw audio bytes of a single recording file.

Streams the raw audio for one recording file. The `fileId` is validated against the call's known recording files before the stream begins. Unlike the other voice endpoints, this route does **not** return JSON — the response body is the audio itself.

Requires the `voice_calls.read` scope and the **Voice Calls** product entitlement.

## Path Parameters

<ParamField path="callId" type="string" required>
  The id of the call the recording belongs to.
</ParamField>

<ParamField path="fileId" type="string" required>
  The recording file id, as returned by [List Recordings](/api-reference/voice/calls/list-recordings).
</ParamField>

## Response

The response body is the raw audio stream — not JSON. The `Content-Type` is passed through from the provider and defaults to `audio/wav`. Write it straight to a file (for example with curl's `--output`).

## Examples

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.tracklysms.com/api/v1/voice/calls/665f1e2a9c4b1a0012ab34cd/recording/files/665f1e2a9c4b1a0012abd001 \
    -H "X-Api-Key: trk_your_api_key_here" \
    --output recording.wav
  ```
</RequestExample>

## Error Codes

| Status | Code                 | Meaning                                               |
| ------ | -------------------- | ----------------------------------------------------- |
| 403    | `voice_not_entitled` | Voice calling is not enabled for your account.        |
| 404    | `call_not_found`     | No call with that id exists on your account.          |
| 404    | `file_not_found`     | No recording file with that id belongs to the call.   |
| 409    | `call_not_ready`     | The call has not yet been accepted by the provider.   |
| 502    | `provider_error`     | The upstream telephony provider rejected the request. |
