Runway Creative Suite

Animação de imagem profissional com modelos Gen-2, Gen-3 e Gen4. Resultados com qualidade de cinema.

✓ Modelos Gen-2, Gen-3 e Gen4

✓ Animação de imagem

✓ Controle de movimento

✓ Qualidade HD

Autenticação

Para acessar o Runway via API do Doitong, use sua chave de API. Inclua-a na mutação GraphQL ou nos cabeçalhos da API REST.

Importante: Mantenha sua chave de API do Doitong em segurança e nunca a exponha no código do lado do cliente. Sempre faça chamadas de API a partir do seu servidor backend.
// GraphQL Header
{
  "Authorization": "Bearer YOUR_API_KEY"
}

// REST Header
"X-API-Key": "YOUR_API_KEY"

Início Rápido

Comece a usar o Runway Gen4 API em poucos minutos. Siga estes passos simples para gerar seu primeiro text to video.

Passo 1: Obtenha sua Chave de API

Crie uma conta no Doitong e acesse seu painel para gerar uma chave de API.

Passo 2: Faça sua Primeira Requisição

Use um dos exemplos de código abaixo para fazer sua primeira chamada de API.

curl -X POST https://api.doitong.com/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: unique-request-id-123" \
  -d '{
    "query": "mutation Generate($input: GenerateInput!) { generate(input: $input) { id status type provider url metadata creditCost } }",
    "variables": {
      "input": {
        "type": "VIDEO",
        "provider": "runway",
        "input": {
          "text": "A serene landscape with mountains and a lake at sunset"
        },
        "options": {
          "duration": 5,
          "aspectRatio": "16:9"
        }
      }
    }
  }'
const response = await fetch('https://api.doitong.com/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY',
    'Idempotency-Key': 'unique-request-id-123'
  },
  body: JSON.stringify({
    query: `
      mutation Generate($input: GenerateInput!) {
        generate(input: $input) {
          id
          status
          type
          provider
          url
          metadata
          creditCost
        }
      }
    `,
    variables: {
      input: {
        type: 'VIDEO',
        provider: 'runway',
        input: {
          text: 'A serene landscape with mountains and a lake at sunset'
        },
        options: {
          duration: 5,
          aspectRatio: '16:9'
        }
      }
    }
  })
});

const data = await response.json();
console.log('Result:', data.data.generate);
import requests
import json

url = "https://api.doitong.com/graphql"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}

query = """
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
  }
}
"""

variables = {
    "input": {
        "type": "VIDEO",
        "provider": "runway",
        "input": {
            "text": "A serene landscape with mountains and a lake at sunset"
        },
        "options": {
            "duration": 5,
            "aspectRatio": "16:9"
        }
    }
}

response = requests.post(url, json={
    "query": query,
    "variables": variables
}, headers=headers)

data = response.json()
print("Result:", data["data"]["generate"])
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
    createdAt
  }
}

# Variables
{
  "input": {
    "type": "VIDEO",
    "provider": "runway",
    "input": {
      "text": "A serene landscape with mountains and a lake at sunset"
    },
    "options": {
      "duration": 5,
      "aspectRatio": "16:9",
      "version": "gen-4",
      "quality": "high"
    }
  }
}

Preços

O Runway Gen4 API utiliza um modelo de preços baseado em créditos. Os créditos são consumidos de acordo com a complexidade e a duração do conteúdo gerado.

Recurso Créditos Descrição
Modo Padrão 100-200 Créditos Vídeo de 5 a 10 segundos em qualidade padrão
Modo Pro 300-500 Créditos Vídeo de 5 a 10 segundos em qualidade profissional

Endpoints da API

O Runway Gen4 API está disponível através do nosso endpoint unificado de GraphQL.

Endpoint GraphQL

POST https://api.doitong.com/graphql

Endpoint REST

POST https://api.doitong.com/v1/text_to_video

Parâmetros

Parâmetros disponíveis para requisições do Runway Gen4 API:

Parâmetro Tipo Obrigatório Descrição
service String Yes Identificador do serviço: "runway"
prompt String Yes Descrição em texto do que será gerado
duration Inteiro No Duração do vídeo em segundos (padrão: 5)
aspectRatio String No Proporção: "16:9", "9:16", "1:1" (padrão: "16:9")
version String No Model version: "gen-2", "gen-3", "gen-4"
webhookUrl String No URL para receber notificações de conclusão

Formato da Resposta

Todas as respostas da API seguem um formato consistente:

Resposta de Sucesso

{
  "data": {
    "generatevideo": {
      "id": "abc123xyz",
      "status": "processing",
      "url": null,
      "webhookUrl": "https://your-webhook.com/callback",
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Resposta Concluída

{
  "data": {
    "generatevideo": {
      "id": "abc123xyz",
      "status": "completed",
      "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
      "duration": 5,
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Tratamento de Erros

A API utiliza códigos de status HTTP padrão e retorna mensagens de erro detalhadas.

Códigos de Erro Comuns

Código de Status Tipo de Erro Descrição
400 Bad Request Invalid parameters or malformed request
401 Unauthorized Missing or invalid API key
402 Payment Required Insufficient credits
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error, please retry

Formato de Resposta de Erro

{
  "errors": [
    {
      "message": "Insufficient credits for this operation",
      "extensions": {
        "code": "INSUFFICIENT_CREDITS",
        "creditsRequired": 100,
        "creditsAvailable": 50
      }
    }
  ]
}

Webhooks

Receba notificações em tempo real quando a geração do seu text to video for concluída.

Configurando Webhooks

Include a <code>webhookUrl</code> parameter in your request to receive a POST notification when processing is complete.

Payload do Webhook

{
  "id": "abc123xyz",
  "status": "completed",
  "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
  "service": "runway",
  "createdAt": "2024-01-01T00:00:00Z",
  "completedAt": "2024-01-01T00:01:00Z",
  "metadata": {
    "duration": 5,
    "width": 1920,
    "height": 1080
  }
}

Segurança do Webhook

Todas as requisições de webhook incluem um cabeçalho de assinatura para verificação:

X-Doitong-Signature: sha256=abc123...

Limites de Taxa

Para garantir o uso justo e a estabilidade do sistema, aplicam-se os seguintes limites de taxa:

Plano Requisições/Minuto Trabalhos Simultâneos Limite Diário
Grátis 10 1 100
Starter 30 3 1,000
Pro 60 10 10,000
Enterprise Personalizado Personalizado Ilimitado
Cabeçalhos de Limite de Taxa: Verifique os cabeçalhos de resposta para o status atual do limite:
  • X-RateLimit-Limit: Maximum requests per window
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Window reset timestamp

Boas Práticas

1. Otimize seus Prompts

Escreva prompts claros e descritivos para obter os melhores resultados:

  • Be specific about visual elements, style, and mood
  • Include details about lighting, camera angles, and composition
  • Avoid contradictory or impossible requests

2. Gerencie o Processamento Assíncrono

A geração é assíncrona. Implemente polling adequado ou webhooks:

// Polling example
async function pollStatus(jobId) {
  let status = 'processing';
  while (status === 'processing') {
    await sleep(2000); // Wait 2 seconds
    const result = await checkJobStatus(jobId);
    status = result.status;
  }
  return result;
}

3. Recuperação de Erros

Implemente lógica de repetição com backoff exponencial:

async function retryWithBackoff(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      await sleep(Math.pow(2, i) * 1000);
    }
  }
}

4. Monitore o Uso de Créditos

Acompanhe seu consumo de créditos para evitar interrupções:

  • Check credit balance before large batch operations
  • Set up alerts for low credit thresholds
  • Implement credit-aware request queuing

Pronto para Começar?

Junte-se a milhares de desenvolvedores que usam o Runway Gen4 API para criar conteúdos incríveis

Obter Chave de API Ver Preços