TutorialrunwayTier 5 · ProFeature· Avançado· PT40M

Runway API: Integre Geração de Vídeo em Pipelines Automatizados

Tutorial avançado sobre a Runway Gen-3 API: autenticação, geração assíncrona, polling de status e casos de uso em automação.

22 de maio de 2026· Atualizado em 24 de maio de 2026por SWEN.AI
Runway API: Integre Geração de Vídeo em Pipelines Automatizados

Runway API: Integre Geração de Vídeo em Pipelines Automatizados

A Runway oferece uma API que permite integrar geração de vídeo em pipelines automatizados — desde scripts simples até sistemas de produção de conteúdo em escala.

Configuração da API

1. Obtenha sua API key

Acesse app.runwayml.com → Settings → API Keys → Create Key.

2. Instale o SDK

# Node.js (SDK oficial)
npm install @runwayml/sdk

# Python
pip install runwayml

Gerando um vídeo (Text to Video)

import Runway from "@runwayml/sdk";

const client = new Runway({ apiKey: process.env.RUNWAY_API_KEY });

async function generateVideo(prompt: string): Promise<string> {
  // 1. Cria a task de geração
  const task = await client.imageToVideo.create({
    model: "gen3a_turbo",
    promptText: prompt,
    duration: 5,
    ratio: "1280:720",
  });

  // 2. Faz polling até a task completar
  let result = await client.tasks.retrieve(task.id);
  while (!["SUCCEEDED", "FAILED"].includes(result.status)) {
    await new Promise(resolve => setTimeout(resolve, 5000)); // aguarda 5s
    result = await client.tasks.retrieve(task.id);
  }

  if (result.status === "FAILED") {
    throw new Error(`Geração falhou: ${result.failure}`);
  }

  return result.output[0]; // URL do vídeo gerado
}

Image to Video via API

import { readFileSync } from "fs";

async function animateImage(imagePath: string, motionPrompt: string) {
  // Converter imagem para base64
  const imageData = readFileSync(imagePath);
  const base64Image = `data:image/jpeg;base64,${imageData.toString("base64")}`;

  const task = await client.imageToVideo.create({
    model: "gen3a_turbo",
    promptImage: base64Image,
    promptText: motionPrompt,
    duration: 5,
    ratio: "1280:720",
  });

  // ... polling igual ao exemplo acima
}

Pipeline de produção de conteúdo

Exemplo real: sistema que gera vídeos de produto automaticamente a partir de fotos:

import { createClient } from "@supabase/supabase-js";
import Runway from "@runwayml/sdk";

const supabase = createClient(SUPABASE_URL, SUPABASE_SERVICE_KEY);
const runway = new Runway({ apiKey: RUNWAY_API_KEY });

async function processProductImages() {
  // Busca produtos que precisam de vídeo
  const { data: products } = await supabase
    .from("products")
    .select("*")
    .eq("video_generated", false)
    .limit(5); // processa em lotes de 5

  for (const product of products) {
    try {
      const prompt = `${product.name} product video.
The product rotates slowly on a clean white surface.
Professional studio lighting. High-end commercial quality.`;

      const task = await runway.imageToVideo.create({
        model: "gen3a_turbo",
        promptImage: product.image_url,
        promptText: prompt,
        duration: 5,
      });

      // Salva o task_id para polling posterior
      await supabase
        .from("products")
        .update({ runway_task_id: task.id, video_status: "processing" })
        .eq("id", product.id);

      console.log(`Task criada para produto ${product.name}: ${task.id}`);
    } catch (error) {
      console.error(`Erro ao processar ${product.name}:`, error);
    }
  }
}

Webhook para processamento assíncrono

Em vez de polling ativo, use webhooks:

// Endpoint que recebe notificação do Runway quando o vídeo fica pronto
app.post("/runway-webhook", async (req, res) => {
  const { id, status, output } = req.body;

  if (status === "SUCCEEDED") {
    const videoUrl = output[0];
    
    // Atualiza o banco com a URL do vídeo
    await supabase
      .from("products")
      .update({ video_url: videoUrl, video_generated: true })
      .eq("runway_task_id", id);
  }

  res.status(200).send("OK");
});

Custos e limites da API

Modelo Custo por segundo
gen3a_turbo $0.05/segundo
gen3a $0.08/segundo

Um vídeo de 10 segundos custa: $0.50 (turbo) a $0.80 (standard).

Boas práticas

  • Cache de resultados: salve as URLs dos vídeos gerados para não regenerar
  • Retry logic: a API pode falhar esporadicamente — implemente retry com backoff
  • Timeout: vídeos levam 2-5 minutos para gerar; não bloqueie threads esperando
  • Rate limiting: a API tem limites por minuto — gerencie filas de jobs

Com a Runway API, você pode escalar produção de vídeo que antes exigia horas de trabalho humano em um processo completamente automatizado.

Salve seu progresso de aprendizado

Crie sua conta gratuita no SWEN.AI para acompanhar as aulas concluídas

Salvar meu progresso

Tutoriais relacionados