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/jsonSolicitaçã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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
prompt | string | Sim* | Descrição textual do vídeo |
model | string | Não | Modelo a utilizar (padrão: seedance-pro-5s) |
image | string | Não* | URL da imagem de referência para imagem para vídeo |
*É necessário fornecer prompt ou image.
Modelos Disponíveis
| Modelo | Resolução | Duração | Créditos |
|---|---|---|---|
seedance-lite-5s | 720p | 5s | 12 |
seedance-lite-10s | 720p | 10s | 24 |
seedance-pro-5s | 1080p | 5s | 35 |
seedance-pro-10s | 1080p | 10s | 70 |
seedance-1.5-pro-5s | 1080p + Áudio | 5s | 50 |
seedance-1.5-pro-10s | 1080p + Áudio | 10s | 100 |
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
| Status | Descrição |
|---|---|
pending | Tarefa na fila |
processing | Vídeo em geração |
success | Geração concluída |
failed | Geraçã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 insuficientes401: Chave API inválida403: Sem permissão para acessar a tarefa404: Tarefa não encontrada500: Erro do servidor