Cómo integrar n8n con la API de Sora2: guía paso a paso

Aprende cómo automatizar la generación de video por IA integrando la API de Sora2 con n8n. Guía completa desde la configuración de la clave API hasta la consulta de resultados.

Introducción

En este tutorial, te mostraremos cómo automatizar la generación de video por IA integrando la API de Sora2 con n8n, la potente herramienta de automatización de flujos de trabajo. Al final de esta guía, podrás activar automáticamente la generación de videos de calidad profesional desde cualquier fuente de datos (como Google Sheets, Telegram o una base de datos en Airtable).

Requisitos previos
  • Una cuenta de Sora2 API con una suscripción activa.
  • Una instancia de n8n (alojada por ti o en la nube).
  • Conocimientos básicos de JSON y solicitudes HTTP.
Pasos de integración
1

1. Genera tu clave API de Sora2

Antes de ir a n8n, necesitas tus credenciales de autenticación. Inicia sesión en Sora2 API, dirígete a la sección de Claves API y crea una nueva clave que comience con 'sk-'.

Paso 1: Obtén tu clave API desde la consola

Paso 1: Obtén tu clave API desde la consola

2

2. Configura el nodo de generación de video

En n8n, añade un nodo HTTP Request. Establece el Método en POST, la URL en https://sora2api.org/api/generate-video y utiliza Header Auth con 'Authorization: Bearer TU_CLAVE_API'.

Paso 2: Configura la solicitud HTTP para la generación de video

Paso 2: Configura la solicitud HTTP para la generación de video

3

3. Extrae el ID de la tarea

La API devolverá un taskId. Guarda este ID para verificar el estado de la generación de tu video más tarde.

4

4. Implementa la lógica de espera y consulta

Añade un nodo Wait de 30 segundos, luego otro nodo HTTP Request para llamar a /api/check-video-status con el taskId.

Paso 4: Configura el nodo Wait para la consulta

Paso 4: Configura el nodo Wait para la consulta

Paso 4: Inspecciona la respuesta exitosa y la URL del video

Paso 4: Inspecciona la respuesta exitosa y la URL del video

5

5. Verifica el estado y repite el bucle

Usa un nodo If para verificar si el estado es 'succeeded'. De lo contrario, regresa al nodo Wait.

Paso 5: Usar el nodo IF para verificar el estado de la tarea

Paso 5: Usar el nodo IF para verificar el estado de la tarea

Importación con un clic: plantilla de flujo de trabalho
Copia el JSON de abajo y pégalo directamente en tu espacio de trabajo de n8n para obtener un flujo de trabajo preconfigurado al instante.
{
  "name": "Sora2Api-Workflow-Template",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [0, 0],
      "name": "When clicking ‘Execute workflow’"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://sora2api.org/api/generate-video",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"prompt\": \"A beautiful sunset over the ocean\",\n  \"aspectRatio\": \"16:9\",\n  \"type\": \"text2video\",\n  \"duration\": 10\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [250, 0],
      "name": "Start Video Generation"
    },
    {
      "parameters": {
        "amount": 30
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [500, 0],
      "name": "Wait 30s"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://sora2api.org/api/check-video-status",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "taskId",
              "value": "={{ $json.data.taskId }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [750, 0],
      "name": "Check Status"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "succeeded",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [1000, 0],
      "name": "Check if Succeeded"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "name": "Final_Video_URL",
              "value": "={{ $json.data.videoUrl }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [1250, -100],
      "name": "Final Result"
    }
  ],
  "connections": {
    "When clicking ‘Execute workflow’": {
      "main": [[{"node": "Start Video Generation", "type": "main", "index": 0}]]
    },
    "Start Video Generation": {
      "main": [[{"node": "Wait", "type": "main", "index": 0}]]
    },
    "Wait": {
      "main": [[{"node": "Check Status", "type": "main", "index": 0}]]
    },
    "Check Status": {
      "main": [[{"node": "Check if Succeeded", "type": "main", "index": 0}]]
    },
    "Check if Succeeded": {
      "main": [
        [{"node": "Final Result", "type": "main", "index": 0}],
        [{"node": "Wait", "type": "main", "index": 0}]
      ]
    }
  }
}

¿Listo para comenzar?

Crea hoy mismo tu primer flujo de trabajo automatizado de video por IA.

Comenzar