| URL de base | http://letmechatgpt.com |
|---|---|
| Fournisseur | ElevenLabs |
| Modèle | eleven_v4 |
| Voix | necQJzI1X0vLpdnJteap |
| Longueur max du texte | 5000 caractères |
| Formats | mp3 (44.1 kHz, 128 kbps) ou wav (PCM 16 bits, 44.1 kHz) |
| Sauvegarde | Chaque MP3 (et WAV si demandé) est stocké dans Firebase Storage ; son URL publique est renvoyée. |
| Authentification | Aucune. |
| Méthode | Route | Description | Réponse |
|---|---|---|---|
| POST | /api/tts |
Génère l'audio, le sauvegarde dans Firebase et renvoie ses URLs. | application/json |
| POST | /api/tts/audio |
Génère l'audio, le sauvegarde dans Firebase et renvoie directement le fichier. | audio/mpeg ou audio/wav |
| GET | /api/tts |
Informations sur l'API (modèle, voix, limites, formats). | application/json |
Au choix : JSON (Content-Type: application/json) ou formulaire
(application/x-www-form-urlencoded / multipart/form-data).
| Champ | Type | Requis | Description |
|---|---|---|---|
text | string | oui | Texte à convertir (max 5000 caractères). |
format | string | non | mp3 (défaut) ou wav. |
POST /api/tts{
"id": "20261017-143012-a1b2c3d4",
"format": "mp3",
"model": "eleven_v4",
"voiceId": "necQJzI1X0vLpdnJteap",
"textLength": 42,
"sizeBytes": 68211,
"mp3Url": "https://firebasestorage.googleapis.com/v0/b/.../o/text-to-speech%2F20261017-143012-a1b2c3d4.mp3?alt=media&token=...",
"wavUrl": "… présent uniquement si format = wav …",
"url": "… URL du fichier au format demandé …",
"warning": "… présent uniquement si la sauvegarde Firebase a échoué …"
}
POST /api/tts/audio
Le corps est le fichier audio. Les métadonnées sont dans les en-têtes
X-Tts-Id, X-Tts-Model, X-Tts-Mp3-Url, X-Tts-Wav-Url
et, en cas de problème de sauvegarde, X-Tts-Firebase-Error.
curl -X POST "http://letmechatgpt.com/api/tts" \
-H "Content-Type: application/json" \
-d '{"text": "Bonjour, ceci est un test.", "format": "mp3"}'
curl -X POST "http://letmechatgpt.com/api/tts" \
--data-urlencode "text=Bonjour, ceci est un test." \
-d "format=wav"
curl -X POST "http://letmechatgpt.com/api/tts/audio" \
-H "Content-Type: application/json" \
-d '{"text": "Bonjour, ceci est un test.", "format": "mp3"}' \
-o sortie.mp3
const res = await fetch("http://letmechatgpt.com/api/tts", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text: "Bonjour, ceci est un test.", format: "mp3" })
});
const data = await res.json();
console.log(data.url); // URL Firebase du MP3
import requests
r = requests.post("http://letmechatgpt.com/api/tts/audio",
json={"text": "Bonjour, ceci est un test.", "format": "wav"})
r.raise_for_status()
open("sortie.wav", "wb").write(r.content)
print(r.headers.get("X-Tts-Mp3-Url"))
Les erreurs sont renvoyées en JSON : {"status": 400, "error": "message"}.
| Code | Cas |
|---|---|
400 | Texte vide, texte trop long, format inconnu, corps de requête illisible. |
401 | Clé API absente ou invalide (uniquement si l'API est protégée). |
500 | Erreur interne (ex. conversion WAV impossible). |
502 | ElevenLabs a refusé ou n'a pas répondu (quota, clé, voix). |