Documentación de la API
Generación de vídeo, síntesis de voz, generación de imágenes y clon de voz. Una sola clave de API, una sola URL base: https://seslab.com.tr/api/v1
Primeros pasos (3 pasos)
Abre una cuenta y genera una clave nueva desde la página «Mis claves» del panel. Tu clave empieza por sk_ (p. ej. sk_a1b2c3…) y solo se muestra una vez: cópiala y guárdala en un lugar seguro.
Añade la cabecera Authorization: Bearer sk_… a cada petición y envía los datos en JSON. La primera petición más sencilla: GET /me — devuelve tu cuenta y tu saldo.
Las imágenes y los vídeos pueden tardar: primero recibes un id y luego consultas el estado con ese id. Los créditos se cobran al completarse y se devuelven automáticamente si falla.
Autenticación
Añade la cabecera Authorization: Bearer sk_… a cada petición. La clave se genera en el panel; una clave inválida o ausente devuelve 401 y demasiados intentos fallidos devuelven 429. Con una clave válida no hay límite de peticiones por minuto.
curl https://seslab.com.tr/api/v1/me \ -H "Authorization: Bearer sk_YOUR_API_KEY"
Token de la app de escritorio
Regla: sk_ se usa únicamente para el intercambio; nunca se guarda de forma permanente dentro de la app de escritorio. La app de escritorio usa la clave sk_ solo en la primera petición de intercambio. Guarda el token dsk_ de la respuesta de POST /api/desktop/auth/token de forma segura en el Llavero de macOS o en el Administrador de credenciales de Windows. En la base de datos de SesLab solo se conserva un hash de ese token.
curl -X POST https://seslab.com.tr/api/desktop/auth/token \
-H "Authorization: Bearer sk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"device_label":"Ufuk Mac M4","app_version":"1.0.0"}'
# Respuesta: { "desktop_token": "dsk_...", "expires_in": 2592000 }Endpoints
/videoInicia una generación de vídeo (asíncrona, 202 + id)según el nivel/video?id=IDConsulta el estado / resultado de un vídeogratis/ttsConvierte texto en voz (síncrono si está listo en ≤45 s; si no, 202 + id)1,0 cr/carácter · v3: 1,5 cr/carácter/tts?id=IDConsulta el estado / audio de un trabajo de TTSgratis/api/image-generateInicia una generación de imagen (asíncrona, 202 + id)según el modelo/api/image-generate/status?id=IDConsulta un trabajo de imagen de larga duracióngratis/voicesCatálogo de voces disponiblesgratis/voice-cloneCrea un clon de voz (multipart/form-data)gratis/voice-cloneLista tus clones de voz y sus voice_idgratis/voice-clone?voice_id=IDElimina un clon de vozgratis/meDatos de la cuenta y saldogratis/creditsSaldo de créditosgratis/statusEstado del sistema (no requiere auth)gratis/desktop/auth/tokenCambia una clave sk_ por un token dsk_ de corta duración para la app de escritoriogratisGeneración de vídeo
POST /video
Devuelve 202 (asíncrono). Consulta el resultado con GET /video?id=. En los trabajos fallidos los créditos se devuelven automáticamente.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| prompt | string (10–1000) | obligatorio | Describe lo que quieres ver en el vídeo. Los prompts en inglés suelen dar mejores resultados. |
| model | string | opc. · pred. standard-video | Paquete de vídeo: standard-video (Rápido) o hd-video (Premium). Si lo dejas vacío se usa standard-video. Los nombres de paquete antiguos se han retirado; si envías uno recibirás un error claro indicando cuál usar. |
| resolution | string | opc. · pred. 720p | Resolución: 720p (predeterminada) o 1080p. 1080p consume más créditos dentro del mismo paquete. |
| aspect_ratio | string | opc. · pred. 16:9 | Solo se admite vídeo horizontal 16:9. |
| duration | number | opc. · pred. 8 | La duración es fija: todos los paquetes de vídeo generan 8 s y el valor que envíes se ignora. |
Niveles de calidad y créditos
| Nivel | model = | Créditos | Notas |
|---|---|---|---|
| Rápido predeterminado | standard-video | 19.500 | 16:9 · 720p · 8 s |
| Rápido (1080p) | standard-video | 29.250 | 16:9 · 1080p · 8 s · envía resolution=1080p |
| Premium | hd-video | 25.500 | 16:9 · 720p · 8 s |
| Premium (1080p) | hd-video | 38.250 | 16:9 · 1080p · 8 s · envía resolution=1080p |
Nota: el endpoint de vídeo admite por ahora solo 16:9 horizontal. Si dejas aspect_ratio vacío se usa 16:9.
Síntesis de voz (TTS)
POST /tts
Si está listo en 45 segundos o menos, recibes un audio_url síncrono. Los textos largos devuelven 202 + id; consúltalos con GET /tts?id=. Para ElevenLabs envía uno de los paquetes voice-natural, o voice-economy como opción económica.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| text | string (1–31000) | obligatorio | El texto que se convertirá en voz. |
| voice_id | string | obligatorio | Con qué voz se leerá. Obtén la lista con GET /voices y pon aquí el id correspondiente. |
| voice_package | string | opc. · pred. voice-natural | ElevenLabs: voice-natural, voice-natural-fast, voice-natural-live o voice-natural-latest. Opción económica: voice-economy. |
| language | string | opcional | Idioma del texto, p. ej. tr (turco). Solo válido para voice-natural y voice-fast. |
| voice_settings | object | opcional | Ajuste fino (solo voice-natural): stability 0–100, similarity_boost 0–100, speed 0,7–1,2, style 0–100, use_speaker_boost: true/false. |
Generación de imágenes
POST /api/image-generate
Endpoint compatible con SesLab. Ahora mismo solo está abierto el modelo de imagen activo verificado. Devuelve 202 + id; consulta el resultado con el endpoint de estado. Si falla, los créditos se devuelven automáticamente.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| prompt | string (1–20000) | obligatorio | ¿Qué debe aparecer en la imagen? Descríbelo libremente (también puedes escribir en turco). |
| model | string | obligatorio | ID del modelo: ahora mismo solo nano-banana-2-lite está activo. image-standard se acepta como alias antiguo. |
| aspect_ratio | string | opcional | Elección de proporción para el modelo activo. |
| resolution | string | desactivado | El modelo activo funciona de forma nativa a 1K; las demás resoluciones están desactivadas. |
| mode | string | desactivado | Los servicios de imagen que no están activos están desactivados. |
| quality | string | desactivado | Los servicios de imagen que no están activos están desactivados. |
| image_input | string[] | opcional | Imágenes de referencia: data URI en base64 o URL http(s). Alias: reference_images. Hasta 4 en el modelo activo. |
| negative_prompt | string | opcional | Elementos que hay que evitar. |
Modelos de imagen
nano-banana-2-liteNano Banana 2 Lite2000 crmodelo activo verificado · 1K · 4 referenciasGET /api/image-generate/status?id=ID
Devuelve los campos status, image_url, image_urls y error de los trabajos de imagen de larga duración.
Clon de voz
POST /voice-clone — multipart/form-data
Gratis. Devuelve un voice_id, que se usa en las llamadas de TTS.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| file | archivo | obligatorio | La muestra de voz que se va a clonar — MP3/M4A/WAV/OGG/FLAC, máximo 10 MB (de 10 segundos a 5 minutos de grabación limpia). |
| voice_name | string (≤100) | obligatorio | El nombre que le das al clon (visible solo para ti). |
| language_tag | string | opc. · pred. Turkish | Idioma de la voz, p. ej. Turkish. |
| gender_tag | string | opc. · pred. female | Género de la voz: female o male. |
GET /voice-clone
Lista todos los clones de voz de tu cuenta, del más reciente al más antiguo, con sus campos voice_id. No admite parámetros.
{
"success": true,
"voices": [
{
"id": "b7c1e0a2-4f10-4a91-9c2e-1d5b7a0e33af",
"voice_id": "2630054",
"cloned_voice_id": "2630054",
"name": "Mi voz",
"created_at": "2026-08-12T09:14:22.000Z"
}
]
}Locución con un clon: envía el voice_id (o el id) que obtienes aquí como voice_id en tu llamada a POST /tts; no hace falta el campo de paquete/modelo y se ignora en las voces clonadas. El límite de texto es de 5000 caracteres.
DELETE /voice-clone?voice_id=ID
Elimina el clon. El parámetro de consulta voice_id es obligatorio; si no se encuentra el clon se devuelve un 404.
Ejemplos de código
# Comprobación básica de autenticación
curl https://seslab.com.tr/api/v1/me \
-H "Authorization: Bearer sk_YOUR_API_KEY"
# Inicia un vídeo — paquetes: standard-video (Rápido) / hd-video (Premium), 16:9, 720p|1080p, 8 s
curl -X POST https://seslab.com.tr/api/v1/video \
-H "Authorization: Bearer sk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Presentación cinematográfica de producto, movimiento de cámara suave",
"aspect_ratio": "16:9",
"model": "standard-video",
"resolution": "720p"
}'
# Consulta el estado del vídeo (gratis, consúltalo repetidamente)
curl "https://seslab.com.tr/api/v1/video?id=VIDEO_ID" \
-H "Authorization: Bearer sk_YOUR_API_KEY"
# Convierte texto en voz
curl -X POST https://seslab.com.tr/api/v1/tts \
-H "Authorization: Bearer sk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Hola, esta voz se ha generado con Seslab.",
"voice_id": "VOICE_ID",
"voice_package": "voice-natural",
"language": "es"
}'
# Genera una imagen — devuelve 202 + id; consulta el resultado en el endpoint de estado
curl -X POST https://seslab.com.tr/api/image-generate \
-H "Authorization: Bearer sk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Foto de producto premium con luz azul sobre fondo oscuro",
"aspect_ratio": "1:1",
"model": "nano-banana-2-lite"
}'Códigos de error
401UnauthorizedFalta la cabecera Authorization o la clave es incorrecta.402Insufficient CreditsCréditos insuficientes. Recarga desde el panel.422Validation ErrorCuerpo de la petición incorrecto o valor no admitido.429Too Many AttemptsMás de 10 intentos de autenticación fallidos en un minuto.404Not FoundNo se ha encontrado la generación consultada (id).503Service Not ReadyEl servicio de generación no está activo en este momento.500Server ErrorError inesperado: vuelve a intentarlo; en los trabajos fallidos se devuelven los créditos.¿Listo para empezar?
Abre una cuenta, genera tu clave de API y envía tu primera petición en cuestión de minutos.