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.
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).
- 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.
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
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
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. 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: Inspecione a resposta de sucesso e a URL do vídeo
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
{
"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