Audio
Isolate a Runway voice
Separate speech from background audio with the Runway API.
POST
/
runwayml
/
v1
/
voice_isolation
cURL
curl https://api.cometapi.com/runwayml/v1/voice_isolation \
--request POST \
--header "Authorization: Bearer $COMETAPI_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "eleven_voice_isolation",
"audioUri": "https://your-audio-host/source-speech.mp3"
}'import os
import requests
payload = { 'model': 'eleven_voice_isolation',
'audioUri': 'https://your-audio-host/source-speech.mp3'}
response = requests.post(
"https://api.cometapi.com/runwayml/v1/voice_isolation",
headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
json=payload,
)
response.raise_for_status()
print(response.json()["id"])
const payload = {
"model": "eleven_voice_isolation",
"audioUri": "https://your-audio-host/source-speech.mp3"
};
const response = await fetch(
"https://api.cometapi.com/runwayml/v1/voice_isolation",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(payload),
},
);
if (!response.ok) throw new Error(await response.text());
const task = await response.json();
console.log(task.id);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cometapi.com/runwayml/v1/voice_isolation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'eleven_voice_isolation',
'audioUri' => 'https://your-audio-host/source-speech.mp3'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cometapi.com/runwayml/v1/voice_isolation"
payload := strings.NewReader("{\n \"model\": \"eleven_voice_isolation\",\n \"audioUri\": \"https://your-audio-host/source-speech.mp3\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cometapi.com/runwayml/v1/voice_isolation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"eleven_voice_isolation\",\n \"audioUri\": \"https://your-audio-host/source-speech.mp3\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cometapi.com/runwayml/v1/voice_isolation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"eleven_voice_isolation\",\n \"audioUri\": \"https://your-audio-host/source-speech.mp3\"\n}"
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-42d3-a456-426614174000"
}{
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>"
}
}Use
POST /runwayml/v1/voice_isolation to separate speech from background audio.
Use the model ID eleven_voice_isolation.
Send your CometAPI API key with Bearer authentication and a JSON request body.
Provide source audio
The request requiresmodel and audioUri. Set audioUri to an accessible
HTTPS URL of the recording that contains the speech to isolate.
Replace the example audio URL with your source file.
Retrieve the result
Save the returnedid, then use Get a Runway task
to retrieve task status. When status is SUCCEEDED, read the audio URLs in
output. If the task fails, inspect failure and failureCode.Authorizations
Use your CometAPI API key.
Body
application/json
Request settings for eleven_voice_isolation.
Response
Task created. Save the returned id to retrieve task status.
Task ID for GET /runwayml/v1/tasks/{id}.
Task state, when returned.
Task submission timestamp, when returned.
Result URLs, when returned.
Failure explanation, when returned.
Machine-readable failure code, when returned.
Task estimate metadata, when returned.
Show child attributes
Show child attributes
Task cost metadata, when returned.
Show child attributes
Show child attributes
Last modified on September 18, 2026
⌘I
cURL
curl https://api.cometapi.com/runwayml/v1/voice_isolation \
--request POST \
--header "Authorization: Bearer $COMETAPI_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "eleven_voice_isolation",
"audioUri": "https://your-audio-host/source-speech.mp3"
}'import os
import requests
payload = { 'model': 'eleven_voice_isolation',
'audioUri': 'https://your-audio-host/source-speech.mp3'}
response = requests.post(
"https://api.cometapi.com/runwayml/v1/voice_isolation",
headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
json=payload,
)
response.raise_for_status()
print(response.json()["id"])
const payload = {
"model": "eleven_voice_isolation",
"audioUri": "https://your-audio-host/source-speech.mp3"
};
const response = await fetch(
"https://api.cometapi.com/runwayml/v1/voice_isolation",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(payload),
},
);
if (!response.ok) throw new Error(await response.text());
const task = await response.json();
console.log(task.id);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cometapi.com/runwayml/v1/voice_isolation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'eleven_voice_isolation',
'audioUri' => 'https://your-audio-host/source-speech.mp3'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cometapi.com/runwayml/v1/voice_isolation"
payload := strings.NewReader("{\n \"model\": \"eleven_voice_isolation\",\n \"audioUri\": \"https://your-audio-host/source-speech.mp3\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cometapi.com/runwayml/v1/voice_isolation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"eleven_voice_isolation\",\n \"audioUri\": \"https://your-audio-host/source-speech.mp3\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cometapi.com/runwayml/v1/voice_isolation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"eleven_voice_isolation\",\n \"audioUri\": \"https://your-audio-host/source-speech.mp3\"\n}"
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-42d3-a456-426614174000"
}{
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>"
}
}