Documentação da API
Bem-vindo à documentação do ElevenLabs Cache. Esta API serve como intermediário para o ElevenLabs com sistema inteligente de cache para economizar tokens.
💡 Dica: Todas as requisições (exceto /api/health) requerem uma API Key válida.
Autenticação
Para usar a API, você precisa de uma API Key. Inclua-a em suas requisições de uma das seguintes formas:
Header HTTP
X-API-Key: sua_api_key_aqui
Query Parameter
?api_key=sua_api_key_aqui
⚠️ Importante: Obtenha sua API Key no Painel Admin
POST /api/tts
Converte texto em áudio usando uma voz específica. O sistema verifica automaticamente se o áudio já está em cache e retorna uma URL para o arquivo MP3.
Request Body
{
"text": "Texto para converter em áudio",
"voice_id": "ID_DA_VOZ",
"model_id": "eleven_turbo_v2_5"
}
Response (JSON)
{
"success": true,
"audio_url": "http://seu-dominio.com/api/audio/abc123...",
"format": "mp3",
"cache": "HIT", // ou "MISS"
"cache_key": "abc123...",
"access_count": 5, // apenas em cache HIT
"file_size": 45678
}
💡 Nova Funcionalidade: A API agora retorna uma URL para o arquivo de áudio MP3. Use esta URL para fazer download ou reproduzir o áudio. A URL é pública e não requer autenticação.
Exemplo com cURL
curl -X POST http://localhost:3000/api/tts \
-H "Content-Type: application/json" \
-H "X-API-Key: sua_api_key_aqui" \
-d '{"text": "Olá, mundo!", "voice_id": "2EiwWnXFnvU5JabPnv8n"}'
Baixar o Áudio
Após obter a URL do áudio, você pode baixá-lo diretamente:
curl -o audio.mp3 "http://localhost:3000/api/audio/abc123..."
Teste Interativo
GET /api/audio/:cacheKey
Serve o arquivo de áudio MP3 diretamente. Esta é uma rota pública que não requer autenticação.
Parâmetros
cacheKey(URL): Chave única do cache retornada pelo endpoint /api/tts
Exemplo
curl -o audio.mp3 http://localhost:3000/api/audio/abc123...def456
💡 Dica: Esta URL pode ser usada diretamente em tags <audio> HTML ou players de áudio.
GET /api/voices
Lista todas as vozes disponíveis na sua conta ElevenLabs.
Exemplo com cURL
curl -H "X-API-Key: sua_api_key_aqui" \
http://localhost:3000/api/voices
Response
{
"success": true,
"count": 28,
"voices": [
{
"voice_id": "2EiwWnXFnvU5JabPnv8n",
"name": "Clyde",
"labels": {
"gender": "male",
"accent": "american"
}
}
]
}
GET /api/cache/stats
Retorna estatísticas detalhadas do cache.
Exemplo com cURL
curl -H "X-API-Key: sua_api_key_aqui" \
http://localhost:3000/api/cache/stats
Exemplos Completos
JavaScript / Node.js
const API_URL = 'http://localhost:3000';
const API_KEY = 'sua_api_key_aqui';
// Listar vozes
const voices = await fetch(`${API_URL}/api/voices`, {
headers: { 'X-API-Key': API_KEY }
}).then(r => r.json());
// Gerar áudio (retorna URL)
const result = await fetch(`${API_URL}/api/tts`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify({
text: 'Olá, mundo!',
voice_id: voices.voices[0].voice_id
})
}).then(r => r.json());
console.log('Cache:', result.cache);
console.log('Audio URL:', result.audio_url);
// Baixar o áudio usando a URL
const audioResponse = await fetch(result.audio_url);
const audioBlob = await audioResponse.blob();
// Ou usar diretamente em um elemento de áudio
// const audio = new Audio(result.audio_url);
// audio.play();
Python
import requests
API_URL = 'http://localhost:3000'
API_KEY = 'sua_api_key_aqui'
# Listar vozes
voices = requests.get(
f'{API_URL}/api/voices',
headers={'X-API-Key': API_KEY}
).json()
# Gerar áudio (retorna URL)
result = requests.post(
f'{API_URL}/api/tts',
headers={'X-API-Key': API_KEY},
json={
'text': 'Olá, mundo!',
'voice_id': voices['voices'][0]['voice_id']
}
).json()
print(f"Cache: {result['cache']}")
print(f"Audio URL: {result['audio_url']}")
# Baixar o áudio usando a URL
audio_response = requests.get(result['audio_url'])
with open('audio.mp3', 'wb') as f:
f.write(audio_response.content)