---
title: "Start audio playback to a leg"
method: POST
path: "/legs/{id}/play"
tags: ["Legs"]
---

# Start audio playback to a leg

`POST /legs/{id}/play`

## Request body

- union
  - object
    - `url` string, uri, required — URL of the audio file (mutually exclusive with tone)
    - `tone` string, required — Built-in telephone tone name. Format: {country}_{type} or bare {type} (defaults to US). Types: ringback, busy, dial, congestion. Countries: us, gb, de, fr, au, jp, it, in, br, pl, ru. Examples: us_ringback, gb_busy, dial.
    - `mime_type` string, required — MIME type (e.g. audio/wav). Required when using url.
    - `repeat` integer, required — Number of times to repeat playback (url only)
    - `volume` integer, required — Volume adjustment in dB (-8 to 8)
  - object
    - `url` string, uri, required — URL of the audio file (mutually exclusive with tone)
    - `tone` string, required — Built-in telephone tone name. Format: {country}_{type} or bare {type} (defaults to US). Types: ringback, busy, dial, congestion. Countries: us, gb, de, fr, au, jp, it, in, br, pl, ru. Examples: us_ringback, gb_busy, dial.
    - `mime_type` string, required — MIME type (e.g. audio/wav). Required when using url.
    - `repeat` integer, required — Number of times to repeat playback (url only)
    - `volume` integer, required — Volume adjustment in dB (-8 to 8)

## Response `200`

Playback started

- StatusResponse
  - `instance_id` string — Instance identifier
  - `status` string, required

## Other responses

- `400` — Invalid JSON or volume out of range
- `404` — Leg not found
- `409` — Leg has no audio writer

## Changes

- **2026-03-26** `d09c97c6ca8c` — 6 info
  - the request property `mime_type` became optional
  - the request property `repeat` became optional
  - the request property `tone` became optional
  - the request property `url` became optional
  - …2 more
- **2026-03-26** `818619c99a1d` — 4 breaking, 2 info
  - the request property `mime_type` became required
  - the request property `tone` became required
  - the request property `url` became required
  - removed the required property `playback_id` from the response with the `200` status
  - …2 more

[Change history](https://skmtc.dev/voiceblender/apis/voiceblender-api/changes/legs/:id/play/post.md)

---

[API](https://skmtc.dev/voiceblender/apis/voiceblender-api.md) · [All operations](https://skmtc.dev/voiceblender/apis/voiceblender-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/voiceblender/voiceblender-api/revisions/89ff267f0958/schema)
