> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Wachtaudio van agent posten

POST https://api.elevenlabs.io/v1/convai/agents/{agent_id}/hold-audio
Content-Type: multipart/form-data

Stelt de aangepaste wachtaudio in die in een loop wordt afgespeeld voor bellers in de wachtrij voor gelijktijdigheid van de agent. Vervangt eerder geüploade clips.

Reference: https://elevenlabs.io/docs/eleven-agents/api-reference/agents/hold-audio/create

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Path parameters

- `agent_id` (string, required) — De id van een agent. Deze wordt teruggegeven wanneer de agent wordt gemaakt.

### Body (multipart/form-data)

This endpoint expects a multipart form containing a file.

- `hold_audio_file` (file, required) — Een MP3- of WAV-bestand dat in een lus wordt afgespeeld voor bellers die wachten in de wachtrij voor gelijktijdige gesprekken van de agent. Maximale grootte: 40 MB. Maximale duur: 180 seconden.

## Response

### 200

Geslaagde response

- `agent_id` (string, required)
- `hold_audio` (AgentHoldAudioConfig, required) — Aangepaste wachtmuziek die in een lus wordt afgespeeld voor bellers die in de wachtrij van de agent wachten. Stel dit in door een bestand te uploaden via het endpoint voor wachtmuziek van de agent. Waarden die worden verzonden in requests voor het maken of bijwerken van een agent worden genegeerd.

## Errors

### 422 Hold Audio Create Request Unprocessable Entity Error

Validatiefout

- `detail` (list of ValidationError, optional)

## Types

### AgentHoldAudioConfig

Aangepaste wachtmuziek die in een lus wordt afgespeeld voor bellers die in de wachtrij van de agent wachten. Stel dit in door een bestand te uploaden via het endpoint voor wachtmuziek van de agent. Waarden die worden verzonden in requests voor het maken of bijwerken van een agent worden genegeerd.

- `audio_path` (string, required) — Opslagpad van de geüploade clip
- `audio_url` (string, required) — Openbare CDN-URL van de geüploade clip
- `original_filename` (string, required) — Bestandsnaam van de geüploade clip zoals opgegeven door de gebruiker
- `duration_secs` (double, required) — Duur van de geüploade clip in seconden
- `size_bytes` (integer, required) — Grootte van de geüploade clip in bytes

### ValidationError

- `loc` (list of ValidationErrorLocItem, required)
- `msg` (string, required)
- `type` (string, required)

### ValidationErrorLocItem

## Examples

**Request**

```json
{
  "hold_audio_file": "<file: <file1>>"
}
```

**Response**

```json
{
  "agent_id": "agent_id",
  "hold_audio": {
    "audio_path": "audio_path",
    "audio_url": "audio_url",
    "original_filename": "original_filename",
    "duration_secs": 1.1,
    "size_bytes": 1
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio"

files = { "hold_audio_file": "open('<file1>', 'rb')" }

response = requests.post(url, files=files)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio';
const form = new FormData();
form.append('hold_audio_file', '<file1>');

const options = {method: 'POST'};

options.body = form;

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"hold_audio_file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"hold_audio_file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"hold_audio_file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio', [
  'multipart' => [
    [
        'name' => 'hold_audio_file',
        'filename' => '<file1>',
        'contents' => null
    ]
  ]
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio");
var request = new RestRequest(Method.POST);
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"hold_audio_file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation
let parameters = [
  [
    "name": "hold_audio_file",
    "fileName": "<file1>"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/hold-audio")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```