---
title: "Stream the audio of a call recording"
method: GET
path: "/v1/calls/{id}/recording/audio"
tags: ["Calls"]
---

# Stream the audio of a call recording

`GET /v1/calls/{id}/recording/audio`

## Request

- Base URL: `https://api-public.skipcall.app`
- URL: `https://api-public.skipcall.app/v1/calls/{id}/recording/audio`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/skipcall/apis/skipcall-public-api/docs/v1/calls/:id/recording/audio/get.ts> (a function with typed inputs; its response is checked against the schema)

Streams the audio of the call recording, authenticated with the same API key as every other endpoint (no public or pre-signed link). Defaults to mp3 (`audio/mpeg`); `?format=wav` returns `audio/wav` and any other value falls back to mp3. Served inline unless `?download=true`, which sets `Content-Disposition: attachment`. Limited to 10 requests per minute. Returns 403 `RECORDING_DISABLED` when call recording is disabled for the workspace of the call. Returns 404 if the call does not exist, is outside the API key scope, has no recording, or its audio is no longer available.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `download` 'true' | 'false'
- `format` 'mp3' | 'wav'

## Response `200`

Audio stream, with `Content-Disposition: inline|attachment; filename="recording-<callId>.mp3|wav"`

## Other responses

- `401`: Invalid or missing API key
- `403`: `RECORDING_DISABLED`: call recording is disabled for the workspace of this call
- `404`: Call not found, outside API key scope, without recording, or audio no longer available

## Changes

- **2026-10-09** `4bda52c7f85f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/skipcall/apis/skipcall-public-api/changes/v1/calls/:id/recording/audio/get.md)

---

[API](https://skmtc.dev/skipcall/apis/skipcall-public-api.md) - [All operations](https://skmtc.dev/skipcall/apis/skipcall-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/skipcall/apis/skipcall-public-api/revisions/49ba7ab97f4a?raw)
