Videora

Actualizado 5 junio 2026 · 10 min de lectura

Cómo generar videos desde texto con API en español

Crear videos para TikTok, Reels o YouTube Shorts de forma manual consume horas. Guionizar, grabar, editar, añadir música, exportar. Pero ¿qué pasa si puedes enviar un texto y recibir un video MP4 listo para publicar en segundos?

En este tutorial te muestro cómo usar la API de Videora para convertir texto en video con narración, música de fondo, transiciones y subtítulos automáticos — todo desde código.

Por qué automatizar la creación de videos

Si generas contenido para redes sociales, podcasts visuales, resúmenes de noticias o material educativo, probablemente enfrentas el mismo problema: crear un video de 30 segundos toma 45+ minutos entre edición, exportación y ajustes.

Con una API de generación de video puedes:

Alternativas y por qué Videora es diferente

HerramientaPrecioLimitación
Synthesia$22/mesSolo avatares. No acepta JSON. Sin API batch.
HeyGen$24/mesEnfocado en talking heads. Lento para batch.
Lumen5$29/mesSin API pública. Solo editor visual.
InVideo$25/mesSin API. Requiere edición manual por video.
VideoraFree — $19/mesAPI-first. JSON → MP4. Batch nativo. Voces en español.

Paso 1: Define tus escenas en JSON

Cada video se compone de escenas. Cada escena tiene un texto que se narra, una imagen de fondo (opcional) y una duración.

{
  "title": "3 tips para dormir mejor",
  "aspect_ratio": "9:16",
  "voice": "es-MX-Jorge",
  "scenes": [
    {
      "text": "Tip número uno: evita pantallas una hora antes de dormir.",
      "image_url": "https://images.pexels.com/photos/1028741/pexels-photo-1028741.jpeg",
      "duration": 5
    },
    {
      "text": "Tip dos: mantén tu habitación a 18 grados centígrados.",
      "image_url": "https://images.pexels.com/photos/271743/pexels-photo-271743.jpeg",
      "duration": 5
    },
    {
      "text": "Tip tres: no tomes café después de las 2 de la tarde.",
      "image_url": "https://images.pexels.com/photos/302899/pexels-photo-302899.jpeg",
      "duration": 5
    }
  ]
}

Paso 2: Envía a la API

Python

import requests

payload = {
    "title": "3 tips para dormir mejor",
    "aspect_ratio": "9:16",
    "voice": "es-MX-Jorge",
    "scenes": [
        {"text": "Tip uno: evita pantallas antes de dormir.", "duration": 5},
        {"text": "Tip dos: habitación a 18 grados.", "duration": 5},
        {"text": "Tip tres: no café después de las 2pm.", "duration": 5}
    ]
}

resp = requests.post(
    "https://videora.4l3.org/v1/video/render",
    json=payload,
    headers={"Authorization": "Bearer TU_API_KEY"}
)
job = resp.json()
print(f"Job ID: {job['job_id']}")
print(f"Status: {job['status']}")
# Cuando status == "done" → descarga de job["output_url"]

JavaScript (Node.js)

const resp = await fetch("https://videora.4l3.org/v1/video/render", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer TU_API_KEY"
  },
  body: JSON.stringify({
    title: "3 tips para dormir mejor",
    aspect_ratio: "9:16",
    voice: "es-MX-Jorge",
    scenes: [
      { text: "Tip uno: evita pantallas.", duration: 5 },
      { text: "Tip dos: 18 grados.", duration: 5 },
      { text: "Tip tres: no café.", duration: 5 }
    ]
  })
});
const job = await resp.json();
console.log(`Job: ${job.job_id}, Status: ${job.status}`);

cURL

curl -X POST https://videora.4l3.org/v1/video/render \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TU_API_KEY" \
  -d '{
    "title": "3 tips para dormir",
    "aspect_ratio": "9:16",
    "voice": "es-MX-Jorge",
    "scenes": [
      {"text": "Tip uno: evita pantallas.", "duration": 5},
      {"text": "Tip dos: 18 grados.", "duration": 5}
    ]
  }'

PHP

$ch = curl_init("https://videora.4l3.org/v1/video/render");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "Authorization: Bearer TU_API_KEY"
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "title" => "3 tips para dormir",
        "aspect_ratio" => "9:16",
        "voice" => "es-MX-Jorge",
        "scenes" => [
            ["text" => "Tip uno.", "duration" => 5],
            ["text" => "Tip dos.", "duration" => 5]
        ]
    ])
]);
$result = json_decode(curl_exec($ch), true);
echo "Job: " . $result["job_id"];

Paso 3: Consulta el estado y descarga

Los videos se generan de forma asíncrona. Consulta el estado del job:

# Consultar estado
curl https://videora.4l3.org/v1/jobs/TU_JOB_ID

# Respuesta cuando está listo:
{
  "job_id": "abc123",
  "status": "done",
  "output_url": "/output/abc123.mp4",
  "duration_seconds": 15,
  "created_at": "2026-06-05T10:30:00Z"
}

Cuando status sea "done", descarga el MP4 desde output_url.

Casos de uso reales

Configuraciones avanzadas

Aspectos de video

Voces disponibles

Genera tu primer video gratis

3 videos/mes sin tarjeta de crédito. Probar Videora →

Preguntas frecuentes

¿Necesito una API key?

El plan Free no requiere API key para los primeros 3 videos. Para Pro y Premium, obtén tu key en el panel de Videora.

¿Puedo agregar música de fondo?

Sí. Añade el campo "music": "upbeat" al JSON raíz. Las pistas de música están libres de derechos.

¿Los subtítulos se generan automáticamente?

Sí. Videora quema los subtítulos directamente en el video, sincronizados con la narración.

¿Puedo generar videos en lote?

Sí. Envía múltiples requests a /v1/video/render. Cada uno devuelve un job_id independiente que puedes consultar en paralelo.