Visão Geral

Use sua chave API para gerar vídeos através da API Seedance. A API suporta geração de texto para vídeo e de imagem para vídeo. A geração de vídeo é assíncrona — você envia uma tarefa e depois consulta os resultados.

Endpoints

Gerar Vídeo

  • Método: POST
  • URL: https://api.seedanceapi.dev/v1/video/generate

Consultar Tarefa

  • Método: POST
  • URL: https://api.seedanceapi.dev/v1/video/query

Autenticação

Inclua sua chave API no cabeçalho Authorization:

Authorization: Bearer SUA_CHAVE_API
Content-Type: application/json

Solicitação de Geração de Vídeo

{
  "prompt": "Um gato usando óculos de sol caminhando na praia com palmeiras ao fundo",
  "model": "seedance-pro-5s",
  "image": "https://example.com/reference-image.jpg"
}

Parâmetros

ParâmetroTipoObrigatórioDescrição
promptstringSim*Descrição textual do vídeo
modelstringNãoModelo a utilizar (padrão: seedance-pro-5s)
imagestringNão*URL da imagem de referência para imagem para vídeo

*É necessário fornecer prompt ou image.

Modelos Disponíveis

ModeloResoluçãoDuraçãoCréditos
seedance-lite-5s720p5s12
seedance-lite-10s720p10s24
seedance-pro-5s1080p5s35
seedance-pro-10s1080p10s70
seedance-1.5-pro-5s1080p + Áudio5s50
seedance-1.5-pro-10s1080p + Áudio10s100

Resposta da Geração

{
  "code": 0,
  "message": "ok",
  "data": {
    "task_id": "abc123-def456-789",
    "status": "pending",
    "model": "seedance-pro-5s",
    "scene": "text-to-video"
  }
}

Solicitação de Consulta de Tarefa

{
  "task_id": "abc123-def456-789"
}

Resposta da Consulta

{
  "code": 0,
  "message": "ok",
  "data": {
    "task_id": "abc123-def456-789",
    "status": "success",
    "model": "seedance-pro-5s",
    "scene": "text-to-video",
    "videos": [
      {
        "url": "https://cdn.seedanceapi.dev/videos/abc123.mp4"
      }
    ],
    "error": null
  }
}

Valores de Status da Tarefa

StatusDescrição
pendingTarefa na fila
processingVídeo em geração
successGeração concluída
failedGeração falhou

Exemplos

cURL - Gerar Vídeo

curl -X POST "https://api.seedanceapi.dev/v1/video/generate" \
  -H "Authorization: Bearer SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Um gato usando óculos de sol caminhando na praia",
    "model": "seedance-pro-5s"
  }'

cURL - Consultar Tarefa

curl -X POST "https://api.seedanceapi.dev/v1/video/query" \
  -H "Authorization: Bearer SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "task_id": "abc123-def456-789"
  }'

Node.js

async function generateVideo() {
  // Passo 1: Enviar tarefa de geração de vídeo
  const genRes = await fetch('https://api.seedanceapi.dev/v1/video/generate', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer SUA_CHAVE_API',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      prompt: 'Um gato usando óculos de sol caminhando na praia',
      model: 'seedance-pro-5s',
    }),
  });

  const genResult = await genRes.json();
  if (genResult.code !== 0) throw new Error(genResult.message);

  const taskId = genResult.data.task_id;
  console.log('Tarefa enviada:', taskId);

  // Passo 2: Consultar resultados periodicamente
  while (true) {
    await new Promise((r) => setTimeout(r, 15000)); // Aguardar 15 segundos

    const queryRes = await fetch('https://api.seedanceapi.dev/v1/video/query', {
      method: 'POST',
      headers: {
        Authorization: 'Bearer SUA_CHAVE_API',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ task_id: taskId }),
    });

    const queryResult = await queryRes.json();
    if (queryResult.code !== 0) throw new Error(queryResult.message);

    const { status, videos, error } = queryResult.data;

    if (status === 'success') {
      console.log('Vídeo pronto:', videos[0].url);
      return videos[0].url;
    }

    if (status === 'failed') {
      throw new Error(error || 'A geração do vídeo falhou');
    }

    console.log('Status:', status);
  }
}

Python

import requests
import time


def generate_video():
    headers = {
        'Authorization': 'Bearer SUA_CHAVE_API',
        'Content-Type': 'application/json',
    }

    # Passo 1: Enviar tarefa de geração de vídeo
    gen_res = requests.post(
        'https://api.seedanceapi.dev/v1/video/generate',
        headers=headers,
        json={
            'prompt': 'Um gato usando óculos de sol caminhando na praia',
            'model': 'seedance-pro-5s',
        },
        timeout=60
    )
    gen_result = gen_res.json()
    if gen_result.get('code') != 0:
        raise Exception(gen_result.get('message'))

    task_id = gen_result['data']['task_id']
    print(f'Tarefa enviada: {task_id}')

    # Passo 2: Consultar resultados periodicamente
    while True:
        time.sleep(15)  # Aguardar 15 segundos

        query_res = requests.post(
            'https://api.seedanceapi.dev/v1/video/query',
            headers=headers,
            json={'task_id': task_id},
            timeout=60
        )
        query_result = query_res.json()
        if query_result.get('code') != 0:
            raise Exception(query_result.get('message'))

        data = query_result['data']
        status = data['status']

        if status == 'success':
            video_url = data['videos'][0]['url']
            print(f'Vídeo pronto: {video_url}')
            return video_url

        if status == 'failed':
            raise Exception(data.get('error') or 'A geração do vídeo falhou')

        print(f'Status: {status}')


if __name__ == '__main__':
    generate_video()

Respostas de Erro

{
  "code": 400,
  "message": "Insufficient credits"
}

Códigos de erro comuns:

  • 400: Parâmetros de solicitação inválidos ou créditos insuficientes
  • 401: Chave API inválida
  • 403: Sem permissão para acessar a tarefa
  • 404: Tarefa não encontrada
  • 500: Erro do servidor