API Seedance 3.0 para desenvolvedores / v1

Seedance 2.5.
Dentro do seu produto.

Transforme texto, imagens e mídias de referência em vídeo com uma única API. Use seus créditos Seedance 3.0, mantenha seu fluxo de trabalho e desenvolva com um processo claro da solicitação ao resultado.

Créditos compartilhados da contaTarefas de vídeo assíncronasSolicitações idempotentes
POST /api/v1/videos
{
  "model": "seedance-2.5",
  "mode": "text-to-video",
  "prompt": "A paper boat drifting into the morning light",
  "duration": 5,
  "resolution": "720p",
  "aspectRatio": "16:9"
}
Sua chave. Seus créditos. Sua aplicação.
01 / COMECE A DESENVOLVER

Seu primeiro vídeo em poucas solicitações.

Salve sua chave como SEADANCE_API_KEY no servidor. Defina SEADANCE_REQUEST_KEY com um valor exclusivo para este vídeo (por exemplo, usando uuidgen) e mantenha esse valor nas novas tentativas. Verifique se sua conta tem créditos suficientes. Este exemplo reserva 350 créditos para um vídeo de 5 segundos em 720p. Copie o id retornado para consultar o status.

Terminal
export SEADANCE_API_KEY="sd_live_your_key"
# Keep this value for retries; choose a new value for a new video.
export SEADANCE_REQUEST_KEY="${SEADANCE_REQUEST_KEY:-$(uuidgen)}"

curl --fail-with-body "https://seedance3ai.dev/api/v1/videos" \
  -H "Authorization: Bearer $SEADANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SEADANCE_REQUEST_KEY" \
  --data '{
  "model": "seedance-2.5",
  "mode": "text-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5
}'

Esta documentação nunca inicia uma geração automaticamente. Enviar uma solicitação de criação consome seus créditos.

Faça a autenticação pelo seu servidor.

Toda chamada à API usa Authorization: Bearer sd_live_…. Não inclua chaves em navegadores, aplicativos móveis, repositórios públicos ou código do cliente. A chave completa é exibida uma única vez; você pode revogá-la no painel da API.

URL basehttps://seedance3ai.dev/api/v1

Permissões padrão das chaves: videos:write para uploads e geração; videos:read para modelos e status das tarefas; account:read para créditos. O acesso e os limites da conta se aplicam a todas as chaves.

Crie uma tarefa de vídeo.

POST/api/v1/videos

Use Content-Type: application/json e um Idempotency-Key exclusivo para cada geração planejada. O servidor pode levar algum tempo para obter a aceitação da tarefa pelo provedor. Se a conexão atingir o tempo limite, repita o mesmo corpo com a mesma chave. HTTP 202 significa que a tarefa foi aceita, não concluída. Idempotency-Key aceita de 1 a 128 caracteres ASCII imprimíveis, sem espaços.

ParâmetroValores e requisitos
modelstringseedance-2.5

Obrigatório. A API oferece suporte ao Seedance 2.5 atualmente.

modestringtext-to-video | image-to-video | reference-to-video

Obrigatório. Escolha o modo de entrada; os campos de mídia devem corresponder a esse modo.

promptstring3–30.000 caracteres

Obrigatório. Descreva a cena, o movimento e o áudio.

durationinteger4, 5, 6, 8, 10, 12, 15, 20, 25, 29, 30

Obrigatório, em segundos. A edição usa a duração do vídeo original, arredondada para cima na cobrança.

resolutionstring480p | 720p | 1080p

Obrigatório. Define a tarifa em créditos.

aspectRatiostring1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 21:9

Obrigatório. A geração a partir de imagem usa a proporção do primeiro quadro.

firstFrameUrl / lastFrameUrlstringpublicObjectUrl do arquivo enviado

A geração a partir de imagem exige um primeiro quadro. O último quadro é opcional.

referenceImageUrlsstring[]Até 30 imagens

Para reference-to-video. Primeiro, envie todos os arquivos para sua conta.

referenceVideoUrls / referenceAudioUrlsstring[]Até 10 vídeos / 10 arquivos de áudio

Cada grupo pode totalizar no máximo 30 segundos. O servidor valida a mídia antes da geração.

referenceTaskTypestringreference | edit | extend

Opcional; o padrão é reference. edit e extend exigem reference-to-video com exatamente um vídeo original.

generateAudiobooleantrue

Opcional. Seedance 2.5 inclui áudio nativo; false é rejeitado.

batchCountinteger1

Opcional. Um vídeo por solicitação.

Esses campos permitem que o Seedance 2.5 trabalhe com texto, quadros iniciais e finais, referências multimodais, edição e extensão de vídeo. GET /models é a referência atualizada para os recursos e preços disponíveis.

Exemplo de solicitação de imagem para vídeo
request.json
{
  "model": "seedance-2.5",
  "mode": "image-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5,
  "firstFrameUrl": "YOUR_UPLOADED_PUBLIC_OBJECT_URL"
}
Exemplo de solicitação com referências
request.json
{
  "model": "seedance-2.5",
  "mode": "reference-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5,
  "referenceImageUrls": [
    "YOUR_UPLOADED_IMAGE_URL"
  ],
  "referenceVideoUrls": [
    "YOUR_UPLOADED_VIDEO_URL"
  ]
}
USE SUAS REFERÊNCIAS

Envie uma vez. Use a URL como referência.

Envie POST /uploads com fileName, contentType, size (em bytes) e kind (image, video ou audio). Antes de expiresAt, envie os bytes originais do arquivo para uploadUrl com PUT e os cabeçalhos requiredHeaders. Após concluir o upload, use publicObjectUrl na solicitação de geração. As referências devem pertencer à mesma conta; URLs externas arbitrárias e entradas em base64 não são aceitas.

upload.mjs
// Node.js 20+ · upload once, then use publicObjectUrl
import { readFile } from "node:fs/promises";

const bytes = await readFile("./first-frame.jpg");
const signed = await fetch("https://seedance3ai.dev/api/v1/uploads", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SEADANCE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    fileName: "first-frame.jpg", contentType: "image/jpeg",
    size: bytes.length, kind: "image",
  }),
});
const upload = await signed.json();
if (!signed.ok) throw new Error(JSON.stringify(upload));
const stored = await fetch(upload.uploadUrl, {
  method: "PUT", headers: upload.requiredHeaders, body: bytes,
});
if (!stored.ok) throw new Error("Upload failed");
console.log(upload.publicObjectUrl);
// Use this URL as firstFrameUrl in an image-to-video request.

O tamanho e o tipo de conteúdo declarados devem corresponder ao arquivo enviado. URLs de upload expiram; solicite outra se necessário. A duração, as dimensões e o formato da mídia são validados antes da geração.

Acompanhe a tarefa até a conclusão.

GET /videos/:id retorna a tarefa atual. Consulte a cada 5–10 segundos, pare ao receber succeeded ou failed e respeite o intervalo de Retry-After quando ele estiver presente. As consultas são limitadas às tarefas de API da sua conta. A integração atual usa consultas periódicas.

GET /api/v1/videos/:id
curl --fail-with-body "https://seedance3ai.dev/api/v1/videos/TASK_ID" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"
queuedprocessingsucceeded / failed
Exemplo de tarefa concluída
{
  "id": "a1b2c3d4-1234-4567-8901-abcdef123456",
  "status": "succeeded",
  "credits_reserved": 350,
  "created_at": "2026-10-27T00:00:00.000Z",
  "output": {
    "url": "https://your-result-host.example/video.mp4"
  },
  "error": null,
  "refund_status": "not_applicable"
}

output é null até que um vídeo esteja disponível. Uma tarefa com falha inclui um erro; consulte refund_status para verificar o reembolso dos créditos. Baixe os resultados concluídos assim que possível. Excluir um vídeo não reinicia sua solicitação: repetir esse Idempotency-Key retorna 410 video_deleted e não pode criá-lo novamente.

UMA CONTA, UM SALDO

Conheça o custo em créditos antes de integrar.

A geração pela API usa os mesmos créditos da conta e as mesmas tarifas do Seedance 2.5 que o site. Os créditos são reservados quando uma solicitação é aceita. Gerações com falha devolvem esses créditos ao saldo de créditos avulsos. Uma falha de validação anterior à criação da tarefa não gera um vídeo sujeito a cobrança.

480p

30créditos / segundo de saída

+ 20 créditos / segundo de vídeo de referência

720p

70créditos / segundo de saída

+ 50 créditos / segundo de vídeo de referência

1080p

160créditos / segundo de saída

+ 90 créditos / segundo de vídeo de referência

Custo = duração da saída × tarifa de saída, mais a duração de qualquer vídeo de referência × tarifa de referência. A duração dos vídeos de referência é medida no servidor; o total é arredondado para baixo para segundos inteiros na cobrança. O áudio nativo está incluído. Por exemplo, 5 segundos em 720p custam 350 créditos, ou 600 créditos com um vídeo de referência de 5 segundos.

Consultar modelos, preços e saldo
curl --fail-with-body "https://seedance3ai.dev/api/v1/models" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"

curl --fail-with-body "https://seedance3ai.dev/api/v1/credits" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"

Veja os créditos disponíveis, o histórico de solicitações e os limites da conta no painel da API. Adicione créditos pela página de preços do site usando a mesma conta; não existe saldo separado nem endpoint de recarga da API. Não é necessária uma assinatura ativa se você tiver créditos disponíveis suficientes. A expiração da assinatura e as regras dos créditos avulsos são as mesmas do uso pelo site.

Adicionar créditos não aumenta os limites de frequência, concorrência ou uso diário da API, nem reativa uma conta desativada. O limite diário contabiliza todos os créditos reservados, incluindo os de gerações com falha reembolsadas, e é reiniciado às 00:00 UTC. Entre em contato com o suporte se sua aplicação precisar de limites maiores.

Ver planos e adicionar créditos

Tente novamente com segurança. Evite cobranças duplicadas.

Use um Idempotency-Key para cada vídeo planejado e mantenha-o junto com o corpo exato da solicitação até conhecer o resultado. Chaves novas representam gerações novas. Uma resposta de erro contém error.code, error.message e request_id; informe o ID da solicitação ao entrar em contato com o suporte.

HTTPSignificadoPróximo passo
400Solicitação inválidaVerifique a mensagem de erro, os campos e as restrições de mídia antes de tentar novamente.
401Chave de API inválidaVerifique o cabeçalho Bearer. Chaves revogadas não podem ser reutilizadas.
402Créditos insuficientesAdicione créditos à mesma conta Seedance 3.0.
403Acesso negadoO acesso à API está desativado ou a chave não tem a permissão necessária.
404Vídeo não encontradoUse o ID de uma tarefa criada pela sua conta por meio desta API.
409Conflito na solicitaçãoPara request_in_progress, aguarde e tente novamente com o mesmo corpo e a mesma chave. idempotency_conflict indica que a chave foi reutilizada com um corpo diferente. request_expired ou request_previously_failed confirma que nenhum vídeo foi enviado para geração: corrija o problema informado e use uma nova chave.
410Vídeo excluídovideo_deleted indica que a solicitação original foi processada, mas o vídeo foi excluído. A chave não pode gerar o vídeo novamente. Pare de tentar; use uma nova chave apenas se quiser iniciar intencionalmente uma nova geração sujeita a cobrança.
429Limite da contaRespeite Retry-After. Os limites de frequência, tarefas simultâneas e créditos diários são compartilhados entre todas as chaves. Os limites diários são reiniciados às 00:00 UTC.
500 / 503Erro temporário do serviçoMantenha o Idempotency-Key. Repita o mesmo envio; não crie uma nova chave quando o resultado for incerto.

Se o envio retornar request_in_progress, aguarde e repita a mesma solicitação. Nunca troque por uma chave nova apenas para contornar um tempo limite. Se o reembolso de uma tarefa com falha ainda estiver pendente, guarde o ID da tarefa e entre em contato com o suporte.

Pronto para conectar sua aplicação?

Crie uma chave e desenvolva sua primeira integração.

Abrir o painel da API