curl --request POST \
--url https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?"
}
'import requests
url = "https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3"
payload = { "text": "Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
text: 'Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?'
})
};
fetch('https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3",
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([
'text' => 'Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?'
]),
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://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3"
payload := strings.NewReader("{\n \"text\": \"Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?\"\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://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3")
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 \"text\": \"Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?\"\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = ["text": "Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?"] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self)){
"id": "gen_123",
"status": "IN_QUEUE",
"input": {
"prompt": "lofi piano with soft rain ambience",
"duration": 15
},
"usage": {
"total": 20,
"subscription": 20,
"permanent": 0
}
}{
"error": "TTS_GENERATION_INVALID_INPUT",
"code": "TTS_GENERATION_INVALID_INPUT",
"message": "'prompt' parameter is required"
}{
"error": "UNAUTHORIZED",
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}{
"error": "INSUFFICIENT_CREDITS",
"code": "TTS_GENERATION_INSUFFICIENT_CREDITS",
"message": "Insufficient credits for this generation."
}{
"error": "WORKSPACE_FORBIDDEN",
"code": "WORKSPACE_FORBIDDEN",
"message": "You do not have access to this workspace."
}{
"error": "TEMPLATE_NOT_FOUND",
"code": "TEMPLATE_NOT_FOUND",
"message": "Template not found."
}{
"error": "TTS_GENERATION_CONTENT_REJECTED",
"code": "TTS_GENERATION_CONTENT_REJECTED",
"message": "Request content was rejected by the moderation policy."
}{
"error": "TTS_GENERATION_RATE_LIMITED",
"code": "TTS_GENERATION_RATE_LIMITED",
"message": "Rate limit exceeded. Please retry later."
}{
"error": "TTS_GENERATION_FAILED",
"code": "TTS_GENERATION_FAILED",
"message": "Generation failed."
}{
"error": "TTS_GENERATION_FAILED",
"code": "TTS_GENERATION_FAILED",
"message": "Generation failed."
}{
"error": "TTS_GENERATION_PROVIDER_UNAVAILABLE",
"code": "TTS_GENERATION_PROVIDER_UNAVAILABLE",
"message": "Upstream generation provider is temporarily unavailable."
}{
"error": "TTS_GENERATION_TIMEOUT",
"code": "TTS_GENERATION_TIMEOUT",
"message": "Generation timed out."
}ElevenLabs Eleven v3
curl --request POST \
--url https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?"
}
'import requests
url = "https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3"
payload = { "text": "Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
text: 'Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?'
})
};
fetch('https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3",
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([
'text' => 'Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?'
]),
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://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3"
payload := strings.NewReader("{\n \"text\": \"Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?\"\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://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3")
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 \"text\": \"Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?\"\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = ["text": "Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?"] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://open.skills.video/api/v1/generation/fal-ai/elevenlabs/tts/eleven-v3")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self)){
"id": "gen_123",
"status": "IN_QUEUE",
"input": {
"prompt": "lofi piano with soft rain ambience",
"duration": 15
},
"usage": {
"total": 20,
"subscription": 20,
"permanent": 0
}
}{
"error": "TTS_GENERATION_INVALID_INPUT",
"code": "TTS_GENERATION_INVALID_INPUT",
"message": "'prompt' parameter is required"
}{
"error": "UNAUTHORIZED",
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}{
"error": "INSUFFICIENT_CREDITS",
"code": "TTS_GENERATION_INSUFFICIENT_CREDITS",
"message": "Insufficient credits for this generation."
}{
"error": "WORKSPACE_FORBIDDEN",
"code": "WORKSPACE_FORBIDDEN",
"message": "You do not have access to this workspace."
}{
"error": "TEMPLATE_NOT_FOUND",
"code": "TEMPLATE_NOT_FOUND",
"message": "Template not found."
}{
"error": "TTS_GENERATION_CONTENT_REJECTED",
"code": "TTS_GENERATION_CONTENT_REJECTED",
"message": "Request content was rejected by the moderation policy."
}{
"error": "TTS_GENERATION_RATE_LIMITED",
"code": "TTS_GENERATION_RATE_LIMITED",
"message": "Rate limit exceeded. Please retry later."
}{
"error": "TTS_GENERATION_FAILED",
"code": "TTS_GENERATION_FAILED",
"message": "Generation failed."
}{
"error": "TTS_GENERATION_FAILED",
"code": "TTS_GENERATION_FAILED",
"message": "Generation failed."
}{
"error": "TTS_GENERATION_PROVIDER_UNAVAILABLE",
"code": "TTS_GENERATION_PROVIDER_UNAVAILABLE",
"message": "Upstream generation provider is temporarily unavailable."
}{
"error": "TTS_GENERATION_TIMEOUT",
"code": "TTS_GENERATION_TIMEOUT",
"message": "Generation timed out."
}Authorizations
API Key for API endpoints
Body
The text to convert to speech.
1 - 5000"Hello! This is a test of the text to speech system, powered by ElevenLabs. How does it sound?"
Voice to use for speech generation.
Alice, Daniel, Tara, Kawaii Aerisita, Jessica, Dr. Von Fusion, Liam, Raju, Leo Moreno, Brian, Harry, Adam, Serena, Todd, Lisa Kim, Dorothy, Will, Jamal, Matilda, Nicole, Emily, Arnold, Prof. Marshal, Sarah, Jessie, Freya, Chris, Lily, Laura, Isabela A., Michael, Bill, Callum, George, Glinda, Hideo, Patrick, Sam, Antoni, Paul, Fin, Joseph, Eric, James, Jeremy, Dave, Charlie "Alice"
"Daniel"
"Tara"
Voice stability (0-1).
0 <= x <= 1Whether to return timestamps for each word in the generated speech.
Language code (ISO 639-1) used to enforce a language for the model. Use auto to let the provider detect language.
auto, en, zh, es, fr, de, it, pt, ru, ja, ko, ar, hi, tr, nl, uk, vi, id, th, pl, ro, el, cs, fi, bg, da, he, ms, fa, sk, sv, hr, hu, no, sl, ca, af, tl, ta Controls text normalization mode: auto lets the provider decide, on always normalizes, and off disables normalization.
auto, on, off Response
Generation submission accepted
Generation id.
Queue status
IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED, CANCELED Normalized input payload for the generation task.
Show child attributes
Show child attributes
Credit usage breakdown for the request
Show child attributes
Show child attributes
Machine-readable generation error code. Present when status is FAILED.
Sanitized human-readable failure message. Present when status is FAILED.