> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.vapi.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.vapi.ai/_mcp/server.

# Retrieve call artifacts

> How to download call recordings and logs from Vapi's private storage using your Private API Key and short-lived, authenticated redirect URLs.

## Overview

> **Note**
>
> Call recording storage is now access-controlled. If your integration fetches recordings, logs, PCAP, or video directly, migrate to the authenticated endpoints below to avoid disruption.
>
> Some private storage URLs contain `hipaa-recordings` in the path. That's an internal naming detail, it doesn't mean HIPAA applies to your account.

Call recordings and logs are stored in a private bucket. These URLs aren't directly downloadable.

To retrieve a recording or log file, call the Vapi API with a [Vapi private API key](/security-and-privacy/api-keys). The API responds with a `302` redirect to a short-lived, authenticated download URL.

> **Warning**
>
> Never expose your Private API Key in client-side code or commit it to version control. Store it as a secret in your backend environment.

## Get your private API key

Follow the [Vapi API key guide](/security-and-privacy/api-keys) to create, view, or copy a private key.

## Integration

To download or retrieve a recording or log file, send your Private API Key in the `Authorization` header:

```
Authorization: Bearer <PRIVATE_API_KEY>
```

Each endpoint responds with a `302` redirect to a short-lived signed URL. Most HTTP clients follow redirects by default — for example, `curl -L` follows the redirect and downloads the artifact in a single command.

## Available endpoints

Base URL: `https://api.vapi.ai`

| Endpoint                             | Returns                                                               |
| ------------------------------------ | --------------------------------------------------------------------- |
| `GET /call/{id}/mono-recording`      | Combined mono recording (WAV/MP3)                                     |
| `GET /call/{id}/stereo-recording`    | Stereo recording, customer + assistant on separate channels (WAV/MP3) |
| `GET /call/{id}/customer-recording`  | Customer-only mono recording (WAV/MP3)                                |
| `GET /call/{id}/assistant-recording` | Assistant-only mono recording (WAV/MP3)                               |
| `GET /call/{id}/video-recording`     | Video recording, when enabled (MP4)                                   |
| `GET /call/{id}/call-logs`           | Structured call logs (gzipped JSONL)                                  |
| `GET /call/{id}/pcap`                | Packet capture, when enabled (PCAP)                                   |

## Example

Download a stereo recording for a given call:

```bash
curl -L \
  -H "Authorization: Bearer $VAPI_PRIVATE_API_KEY" \
  -o recording.wav \
  https://api.vapi.ai/call/<CALL_ID>/stereo-recording
```

Download call logs:

```bash
curl -L \
  -H "Authorization: Bearer $VAPI_PRIVATE_API_KEY" \
  -o call-logs.jsonl.gz \
  https://api.vapi.ai/call/<CALL_ID>/call-logs
```

> **Note**
>
> Signed URLs returned by these endpoints expire after a short period. Always request a fresh URL from the API rather than caching the redirect target.