> 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.

# Vídeo para música

POST https://api.elevenlabs.io/v1/music/video-to-music
Content-Type: multipart/form-data

Gere música de fundo a partir de um ou mais arquivos de vídeo. Os vídeos são combinados em ordem. A descrição e as tags de estilo opcionais influenciam a música gerada.

Reference: https://elevenlabs.io/docs/api-reference/music/video-to-music

## 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

### Query parameters

- `output_format` (enum, optional) — Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
  - Allowed values: `mp3_22050_32`, `mp3_24000_48`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_32000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`, `alaw_8000`, `opus_48000_32`, `opus_48000_64`, `opus_48000_96`, `opus_48000_128`, `opus_48000_192`
- `enable_logging` (boolean, optional, default: true) — Quando enable_logging estiver definido como false, o modo de retenção zero será usado para a solicitação. O modo de retenção zero só pode ser usado por clientes empresariais.

### Body (multipart/form-data)

This endpoint expects a multipart form with multiple files.

- `videos` (files, required) — Um ou mais arquivos de vídeo enviados por meio de um array FormData (multipart/form-data). Eles serão combinados em um único codec, na ordem enviada. É permitido um máximo de 10 vídeos, e o tamanho total do vídeo combinado é limitado a 200 MB. No total, o vídeo pode ter até 600 segundos de duração. Observe que combinar vários vídeos pode aumentar significativamente a duração da solicitação. Se possível, combine os vídeos antecipadamente.
- `description` (string, optional) — Descrição textual opcional da música que você deseja. São permitidos no máximo 4.100 caracteres.
- `tags` (list of string, optional) — Lista opcional de tags de estilo (por exemplo, ['upbeat', 'cinematic']). É permitido um máximo de 10 tags.
- `model_id` (enum, optional) — O modelo a ser usado na geração.
- `add_sfx` (boolean, optional) — Quando true, incorpora os sinais de efeitos sonoros do vídeo.
- `separate_tracks` (boolean, optional) — Quando true, retorna um ZIP com faixas de áudio separadas de música e efeitos sonoros, em vez de um único arquivo mixado. Use isso para ter mais flexibilidade ao sobrepor as faixas.
- `use_audio_as_reference` (boolean, optional) — Quando true, analisa a faixa de áudio do vídeo e usa seus gêneros, BPM, instrumentação, clima e arco como características de referência para a geração de música.
- `sign_with_c2pa` (boolean, optional) — Se deve assinar a música gerada com C2PA. Aplicável apenas a arquivos mp3.

## Response

### 200

Arquivo de áudio gerado que corresponde ao vídeo. O Content-Type e a extensão do arquivo dependem do parâmetro output_format (o padrão é mp3).

- File download.

## Errors

### 403 Forbidden Error

Assinatura obrigatória.

- `any`

### 422 Unprocessable Entity Error

Erro de validação (por exemplo, vídeos inválidos ou ausentes).

- `any`

## Examples

**Request**

```json
{
  "videos": [
    "<file: string>"
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/music/video-to-music"

files = { "videos": "open('string', 'rb')" }
payload = {
    "add_sfx": ,
    "description": ,
    "model_id": ,
    "separate_tracks": ,
    "sign_with_c2pa": ,
    "tags": ,
    "use_audio_as_reference": 
}

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

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/music/video-to-music';
const form = new FormData();
form.append('add_sfx', '');
form.append('description', '');
form.append('model_id', '');
form.append('separate_tracks', '');
form.append('sign_with_c2pa', '');
form.append('tags', '');
form.append('use_audio_as_reference', '');
form.append('videos', 'string');

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/music/video-to-music"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"add_sfx\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"separate_tracks\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sign_with_c2pa\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tags\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_audio_as_reference\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"videos\"; filename=\"string\"\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/music/video-to-music")

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=\"add_sfx\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"separate_tracks\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sign_with_c2pa\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tags\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_audio_as_reference\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"videos\"; filename=\"string\"\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/music/video-to-music")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"add_sfx\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"separate_tracks\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sign_with_c2pa\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tags\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_audio_as_reference\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"videos\"; filename=\"string\"\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/music/video-to-music', [
  'multipart' => [
    [
        'name' => 'videos',
        'filename' => 'string',
        'contents' => null
    ]
  ]
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/music/video-to-music");
var request = new RestRequest(Method.POST);
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"add_sfx\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"separate_tracks\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sign_with_c2pa\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tags\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_audio_as_reference\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"videos\"; filename=\"string\"\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": "add_sfx",
    "value": 
  ],
  [
    "name": "description",
    "value": 
  ],
  [
    "name": "model_id",
    "value": 
  ],
  [
    "name": "separate_tracks",
    "value": 
  ],
  [
    "name": "sign_with_c2pa",
    "value": 
  ],
  [
    "name": "tags",
    "value": 
  ],
  [
    "name": "use_audio_as_reference",
    "value": 
  ],
  [
    "name": "videos",
    "fileName": "string"
  ]
]

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/music/video-to-music")! 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()
```