Como integrar n8n com a API do Sora2: Guia passo a passo

Aprenda como automatizar a geração de vídeos por IA integrando a API do Sora2 com n8n. Guia completo desde a configuração da chave API até a consulta dos resultados.

Introdução

Neste tutorial, mostraremos como automatizar a geração de vídeos por IA integrando a API do Sora2 com n8n, a poderosa ferramenta de automação de fluxo de trabalho. Ao final deste guia, você poderá acionar automaticamente a geração de vídeos de nível profissional a partir de qualquer fonte de dados (como Google Sheets, Telegram ou uma base de dados no Airtable).

Pré-requisitos
  • Uma conta da API do Sora2 com uma assinatura ativa.
  • Uma instância de n8n (auto-hospedada ou Cloud).
  • Conhecimento básico de JSON e solicitações HTTP.
Passos de integração
1

1. Gere sua chave da API do Sora2

Antes de ir para o n8n, você precisa de suas credenciais de autenticação. Faça login na API do Sora2, navegue até a seção Chaves API e crie uma nova chave começando com 'sk-'.

Passo 1: Obtenha sua chave API no Console

Passo 1: Obtenha sua chave API no Console

2

2. Configure o nó de geração de vídeo

No n8n, adicione um nó HTTP Request. Defina o Método como POST, a URL como https://sora2api.org/api/generate-video e use Header Auth com 'Authorization: Bearer SUA_CHAVE_API'.

Passo 2: Configure a solicitação HTTP para geração de vídeo

Passo 2: Configure a solicitação HTTP para geração de vídeo

3

3. Extraia o ID da tarefa

A API retornará um taskId. Salve este ID para verificar o status da geração do seu vídeo mais tarde.

4

4. Implemente a lógica de espera e consulta

Adicione um nó Wait de 30 segundos, depois outro nó HTTP Request para chamar /api/check-video-status com o taskId.

Passo 4: Configure o nó Wait para a consulta

Passo 4: Configure o nó Wait para a consulta

Passo 4: Inspecione a resposta de sucesso e a URL do vídeo

Passo 4: Inspecione a resposta de sucesso e a URL do vídeo

5

5. Verifique o status e repita o loop

Use um nó If para verificar se o status é 'succeeded'. Caso contrário, volte para o nó Wait.

Passo 5: Usar o nó IF para verificar o status da tarefa

Passo 5: Usar o nó IF para verificar o status da tarefa

Importação em um clique: modelo de fluxo de trabalho
Copie o JSON abaixo e cole-o diretamente no seu espaço de trabalho do n8n para obter um fluxo de trabalho pré-configurado instantaneamente.
{
  "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}]
      ]
    }
  }
}

Pronto para começar?

Crie hoje mesmo seu primeiro fluxo de trabalho automatizado de vídeo por IA.

Começar