API
Envías texto y recibes audio. Dos llamadas: un POST para encolar el trabajo y un
GET para descargar el archivo cuando esté listo. Cualquier idioma, cualquier voz del catálogo y desde cualquier lenguaje de programación capaz de hacer una petición HTTP.
Incluida en el plan Ilimitado. Crea tu clave en tu cuenta → Ajustes → Claves API. La clave se muestra una sola vez, al crearla: solo guardamos su hash, así que no podemos volver a enseñártela. ¿La perdiste? Revócala y crea otra.
Autenticación
Manda la clave en la cabecera Authorization de la petición. Nunca se acepta en la URL, y es a propósito: las cadenas de consulta acaban escritas en los registros del servidor, en los proxies y en el historial del navegador.
Authorization: Bearer kw_1a2b3c4d_your-secret-here
Comprueba que una clave funciona:
curl -H "Authorization: Bearer $KW_KEY" https://kreawave.com/api/v1/me
Te responde con tu plan, tu saldo restante y tu concurrencia, así que un programa puede consultarlo antes de encolar un lote en vez de toparse con un 402 a mitad de camino.
Generar audio
curl -X POST https://kreawave.com/api/v1/tts \
-H "Authorization: Bearer $KW_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello world","voice_id":"en_us_...","out_format":"mp3"}'
# -> {"job_id":"tts_9f...","status":"queued"}
| Campo | Obligatorio | Qué hace |
|---|---|---|
text | sí | El texto que se lee. Hasta 600.000 caracteres por trabajo. |
voice_id | sí | De GET /api/v1/voices. |
out_format | no | wav (por defecto) o mp3. |
lang | no | Fuerza el idioma en vez del detectado en el texto. |
seed | no | Misma seed + mismo texto + misma voz = misma toma. |
Pausas
Escribe [[N]] en el texto para fijar ahí la duración de la pausa en milisegundos. La pausa se respeta tal cual cuando supera la pausa natural de la puntuación (~550 ms después de un punto); los valores más cortos se funden con el ritmo de la frase, que es lo que mantiene la narración fluida. Por debajo de ~350 ms se interpreta como fraseo natural. Máximo 30000.
"And then, [[600]] everything went quiet. [[1200]] Nobody moved."
Una sola pausa no puede pasar de 30.000 ms.
Recoger el audio
curl -H "Authorization: Bearer $KW_KEY" https://kreawave.com/api/v1/tts/tts_9f...
# -> {"status":"done","duration_s":3.2,...}
curl -H "Authorization: Bearer $KW_KEY" \
https://kreawave.com/api/v1/tts/tts_9f.../audio -o out.mp3
status pasa por queued → running →
done (o error). Consulta el estado cada pocos segundos; todavía no hay webhooks. DELETE /api/v1/tts/{job_id} cancela uno que aún no ha empezado.
Endpoints
| Método | Ruta | Para qué sirve |
|---|---|---|
| GET | /api/v1/me | Plan, saldo y límites. |
| GET | /api/v1/voices?lang=en&limit=200 | Catálogo de voces. |
| POST | /api/v1/tts | Encola un trabajo. |
| GET | /api/v1/tts/{job_id} | Estado de un trabajo. |
| GET | /api/v1/tts/{job_id}/audio | Descarga el archivo. |
| DELETE | /api/v1/tts/{job_id} | Cancela un trabajo en cola. |
Límites y errores
| Código | Significado |
|---|---|
401 | Clave que falta, mal formada, desconocida o revocada: los cuatro casos se ven igual desde fuera, a propósito. |
403 | Tu plan no incluye la API, tu correo no está verificado o la cuenta está suspendida. |
402 | No hay saldo suficiente para ese trabajo. /me te dice cuánto te queda. |
429 | Demasiados intentos de autenticación fallidos desde tu IP, o la cola está llena. |
Tu plan fija cuántos trabajos se ejecutan a la vez; puedes dejar en cola todos los que quieras y van entrando según se liberan huecos. Se te cobra por la duración real del audio entregado, y solo cuando el trabajo termina bien — un trabajo que falla no te cuesta nada.
Cómo proteger tu clave
- Guárdala en tu servidor o en una variable de entorno. Todo lo que mandas a un navegador o a una app móvil lo puede leer cualquiera que lo ejecute.
- Una clave por programa, con un nombre que reconozcas. Así, al revocar la que se filtró, las demás siguen funcionando.
- Revócala al instante desde tu cuenta. Deja de funcionar en la siguiente petición: no hay que esperar a que caduque ninguna caché.