---
title: "Play audio URL"
method: POST
path: "/calls/{call_control_id}/actions/playback_start"
tags: ["Call Commands"]
---

# Play audio URL

`POST /calls/{call_control_id}/actions/playback_start`

Play an audio file on the call. If multiple play audio commands are issued consecutively,
the audio files will be placed in a queue awaiting playback.

*Notes:*

- When `overlay` is enabled, `target_legs` is limited to `self`.
- A customer cannot Play Audio with `overlay=true` unless there is a Play Audio with `overlay=false` actively playing.

**Expected Webhooks:**

- `call.playback.started`
- `call.playback.ended`

## Path parameters

- `call_control_id` string, required

## Request body

- PlayAudioUrlRequest
  - `audio_url` string — The URL of a file to be played back on the call. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request.
  - `media_name` string — The media_name of a file to be played back on the call. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file.
  - `loop` union
    - string
    - integer
  - `overlay` boolean — When enabled, audio will be mixed on top of any other audio that is actively being played back. Note that `overlay: true` will only work if there is another audio file already being played on the call.
  - `stop` string — When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue.
  - `target_legs` string — Specifies the leg or legs on which audio will be played. If supplied, the value must be either `self`, `opposite` or `both`.
  - `cache_audio` boolean — Caches the audio file. Useful when playing the same audio file multiple times during the call.
  - `audio_type` 'mp3' | 'wav' — Specifies the type of audio provided in `audio_url` or `playback_content`.
  - `playback_content` string — Allows a user to provide base64 encoded mp3 or wav. Note: when using this parameter, `media_url` and `media_name` in the `playback_started` and `playback_ended` webhooks will be empty
  - `client_state` string — Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
  - `command_id` string — Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.

## Response `200`

Successful response upon making a call control command.

- object
  - `data` CallControlCommandResult
    - `result` string

## Other responses

- `422` — Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values, call state errors, conference errors, queue errors, recording/transcription errors, and business logic violations.
- `default` — Unexpected error

---

[API](https://skmtc.net/team-telnyx/apis/telnyx-api.md) · [All operations](https://skmtc.net/team-telnyx/apis/telnyx-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/team-telnyx/telnyx-api/versions/e32d46c5945b/schema)
