Pular para a documentação
Nesta página

Seedance 2.5

Gere vídeos com o Seedance 2.5 usando texto, primeiro e último frames ou referências multimodais. Esta página cobre todo o fluxo de trabalho, da requisição ao resultado, para este modelo.

ID do modelo na API: seedance-2-5

A geração é assíncrona. Salve o taskId retornado ao criar a tarefa e, em seguida, consulte seu status ou receba um webhook.

Recursos

RecursoValores suportados
Resolução de saída480p · 720p · 1080p
Duração de saída4 a 30 segundos
Proporção de tela16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Imagens de referênciaAté 30 imagens
Vídeos de referênciaAté 10 vídeos
Arquivos de áudio de referênciaAté 10 arquivos de áudio
Total de referências combinadasAté 50 arquivos de referência no total
Duração total por grupo de vídeo/áudio30 segundos
seedNão suportado
Também aceita duration=-1 no modo de referência para vídeo; consulte as seções de edição de vídeo e preços abaixo. O modo image-to-video aceita apenas adaptive; omita este campo ou defina-o como adaptive.

Preços e créditos

A geração de vídeo é cobrada em créditos com base na duração faturável em segundos. Sem um vídeo de entrada, a duração faturável equivale à duração do vídeo gerado; com um vídeo de entrada, ela também inclui a duração do vídeo de referência.

A tabela abaixo mostra os créditos cobrados por segundo, e não o custo total de uma tarefa. O valor depende do modelo, da resolução de saída e se foram fornecidos vídeos de referência no modo de referência para vídeo. Consulte as fórmulas e os exemplos abaixo da tabela para calcular o custo total.

Resolução de saídaSem entrada de vídeoCom entrada de vídeo
480p10 créditos/segundo6 créditos/segundo
720p20 créditos/segundo12 créditos/segundo
1080p30 créditos/segundo20 créditos/segundo
  • Sem entrada de vídeo: segundos gerados × tarifa sem vídeo.
  • Com entrada de vídeo: (segundos gerados + segundos medidos do vídeo de referência) × tarifa com vídeo. O servidor mede a duração total do vídeo de referência e a arredonda para cima em segundos inteiros antes da cobrança.
  • Referências apenas de imagem ou de áudio utilizam a tarifa sem vídeo. A tarifa com vídeo aplica-se exclusivamente no modo de referência para vídeo quando há arquivos de vídeo enviados.

Exemplos de cálculo de custos

Texto para vídeo de 5 segundos em 720p: 5 × 20 = 100 créditos.

Vídeo gerado de 5 segundos em 720p com vídeo de referência de 5 segundos: (5 + 5) × 12 = 120 créditos.

Esses créditos são retidos no momento em que a tarefa é criada. Se a tarefa for concluída com sucesso, esse será o valor final cobrado (não há cobrança adicional nem reembolso parcial com base na duração real do arquivo entregue). Tarefas que falharem ou expirarem entram automaticamente no fluxo de reembolso.

Os créditos são reservados no momento do envio e cobrados após a conclusão bem-sucedida. Tarefas que falharem ou expirarem entram no fluxo de reembolso. O status refund_failed indica que o reembolso não pôde ser concluído; verifique os logs da API ou entre em contato com o suporte.

Como os créditos são cobrados quando duration=-1

Quando a duração é definida como -1, o tempo do resultado final não fica fixo, sendo determinado pelo próprio modelo.

Na maioria dos casos, defina a duração para o tempo de vídeo que você realmente precisa em vez de -1. Recomendamos usar -1 apenas para edição de vídeo, e não para outros cenários de geração de vídeo.

Arquivos de referênciaComo o valor é calculadoExemplo
Com vídeos de referênciaSoma-se a duração de todos os vídeos de referência e arredonda-se o total para o próximo segundo inteiro, resultando em T. O valor cobrado é (T + T) × a tarifa com vídeo: um T representa a estimativa de duração da entrega e o outro representa a duração do vídeo enviado.720p com vídeo de referência de 5 segundos: (5 + 5) × 12 = 120 créditos.
Sem vídeos de referência (apenas imagens ou áudio)Adota-se o padrão de 30 segundos como a estimativa de duração da entrega. O valor cobrado é 30 × a tarifa sem vídeo.720p sem vídeo de referência: 30 × 20 = 600 créditos.

Autenticação

Crie uma chave de API no painel. A chave completa é exibida apenas uma vez. Guarde-a com segurança no seu servidor e envie-a como um token Bearer em cada requisição.

URL base

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Defina a variável de ambiente SEEVIO_API_KEY antes de rodar os exemplos. Os exemplos em JavaScript rodam no servidor com Node.js; os de Python utilizam a biblioteca requests.

Início rápido

Envie esta requisição simplificada, salve o taskId retornado e use o exemplo de consulta abaixo. O valor de créditos indicado na resposta de criação é o montante reservado.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Exemplo de resposta de criação de tarefa

Após a aceitação da solicitação acima, a API retornará esta resposta em formato JSON. O taskId é o identificador da tarefa usado para consultas de status subsequentes; credits representa a quantidade de créditos reservados para esta tarefa. Esta resposta confirma a criação da tarefa, mas não significa que o vídeo esteja pronto. Você precisará consultar periodicamente o status da tarefa ou configurar um Webhook para receber o vídeo finalizado.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Criar uma tarefa

POST https://api.seevio.ai/v1/videos/generations

Envie um objeto JSON contendo o modelo e as configurações de entrada (input), além de um callback_url opcional. Sempre especifique o ID do modelo indicado nesta página; omitir o campo seleciona por padrão seedance-2-0.

Corpo da requisição

CampoTipoObrigatórioDescrição e restrições
model
stringSim

ID do modelo. Para usar o Seedance 2.5, defina este campo como seedance-2-5.

callback_url
stringNão

Endpoint HTTPS público para retornos assíncronos (POST) de conclusão ou falha. Redes privadas e localhost não são permitidos.

Exemplo: https://example.com/webhooks/seevio
input
objectSim

Configurações de geração. Deve conter uma descrição de texto (prompt) não vazia.

Parâmetros de entrada

image_urls é obrigatório em image-to-video. O modo reference-to-video requer pelo menos uma referência entre image_urls, video_urls e audio_urls.

Forneça image_urls, video_urls e audio_urls como arrays de strings de URL (string[]). Cada URL fornecida deve estar acessível publicamente via HTTPS, incluindo mídias ignoradas pelo modo selecionado.

CampoTipoObrigatórioPadrãoDescrição e restrições
input.prompt
stringSim

Obrigatório em todos os modos, inclusive com referências apenas de mídia. Limite de até 10.000 caracteres antes do corte; deve conter texto legível (não apenas espaços).

Exemplo: A cat surfing at sunset
input.generation_type
stringNãotext-to-video

text-to-video utiliza apenas o prompt; image-to-video utiliza de 1 a 2 imagens; reference-to-video utiliza referências de imagem, vídeo e/ou áudio.

Valores suportados
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Condicional[]

image-to-video: 1 imagem para o primeiro frame, ou 2 imagens ordenadas para o primeiro e o último frames. reference-to-video: até 30 imagens. Ignorado no modo text-to-video.

Exemplo: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]Condicional[]

Encaminhado apenas em reference-to-video; limite combinado de até 10 vídeos e 30 segundos. Ignorado nos outros modos.

Exemplo: ["https://example.com/source.mp4"]
input.audio_urls
string[]Condicional[]

Encaminhado apenas em reference-to-video; limite combinado de até 10 arquivos de áudio e 30 segundos. Ignorado nos outros modos.

Exemplo: ["https://example.com/music.mp3"]
input.duration
integerNão5

Duração de saída em segundos (número inteiro de 4 a 30). Também aceita -1 unicamente em reference-to-video. Utilize este valor com um vídeo de origem para edição; o faturamento seguirá a regra especial detalhada acima.

Valores suportados
-1 | 4–30
Exemplo: 5
input.aspect_ratio
stringNãoadaptive

Proporção de tela de saída. adaptive permite que o modelo decida a proporção ideal. O modo image-to-video aceita apenas adaptive; omita este campo ou defina-o como adaptive.

Valores suportados
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Exemplo: adaptive
input.resolution
stringNão720p

Utilize uma das resoluções de saída suportadas listadas aqui.

Valores suportados
480p | 720p | 1080p
Exemplo: 720p
input.generate_audio
booleanNãotrue

Solicita a geração de áudio sincronizado.

Valores suportados
true | false
Exemplo: true
input.watermark
booleanNãofalse

Solicita a aplicação de marca d'água de IA no vídeo gerado.

Valores suportados
true | false
Exemplo: false
input.web_search
booleanNãofalse

Permite pesquisa na web quando suportada pelo modelo.

Valores suportados
true | false
Exemplo: false
input.return_last_frame
booleanNãofalse

Solicita o último frame. O resultado da consulta conterá data.last_frame_url quando o frame estiver disponível; caso contrário, será null.

Valores suportados
true | false
Exemplo: true

Campos booleanos devem ser preenchidos com true ou false no JSON, não com strings ou números.

Resposta de criação

O retorno HTTP 200 traz o taskId (string) e os credits (número). Isso confirma a criação da tarefa, não a sua conclusão. O valor abaixo equivale ao exemplo de início rápido (5 segundos em 720p).

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Modos de geração e exemplos

Substitua as URLs de exemplo de media.com pelos seus próprios arquivos HTTPS públicos. Os links de exemplo servem apenas para ilustrar a estrutura da requisição e não representam arquivos reais para download.

Texto para vídeo

Geração a partir de um prompt de texto. Referências de mídia enviadas neste modo são desconsideradas.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Primeiro frame

Envie uma imagem para servir como o primeiro frame e descreva a ação desejada no prompt.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Primeiro e último frames

Envie duas URLs de imagem em ordem: primeiro frame e depois o último frame. Este exemplo também solicita o retorno do último frame gerado de forma isolada.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ],
    "aspect_ratio": "adaptive",
    "return_last_frame": true
  }
}'

Referência multimodal

Combine referências de imagem, vídeo e áudio. O prompt continua obrigatório. O envio de um vídeo de referência altera a fórmula de faturamento.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/camera.mp4"
    ],
    "audio_urls": [
      "https://example.com/ambience.mp3"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Referência de áudio

Use áudio como o único tipo de referência, acompanhado pelo prompt de texto obrigatório que descreve o vídeo desejado.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Create a coastal sunrise scene matching the rhythm of this audio.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "audio_urls": [
      "https://example.com/music.mp3"
    ]
  }
}'

Edição de vídeo

Para a edição de vídeo no Seedance 2.5, a duração deve ser definida como -1 e a proporção de tela (aspect_ratio) como adaptativa. Ambas as configurações são obrigatórias, caso contrário, a geração falhará.

Descreva a edição e envie o vídeo original. Defina duration=-1 e utilize a proporção adaptive. Use um trecho de origem com pelo menos 4 segundos para este fluxo. A regra de faturamento para duration=-1 está explicada acima.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Edit the source video: change the character’s coat to blue and preserve the camera movement.",
    "duration": -1,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Extensão de vídeo

Para a extensão de vídeo do Seedance 2.5, o aspect_ratio deve ser definido como adaptive; caso contrário, a geração poderá falhar. Defina a duração normalmente para o tempo de vídeo desejado dentro do intervalo suportado; não é necessário usar -1.

Descreva como o vídeo de origem deve continuar. Utilize a proporção adaptive e defina uma duração de saída padrão dentro do limite do modelo.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Continue the camera movement from the source video, revealing a forest clearing.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Consultar tarefa

GET https://api.seevio.ai/v1/tasks/{taskId}

Substitua o ID de exemplo pelo taskId recebido no retorno da criação. As consultas só retornam tarefas de propriedade do usuário associado à chave de API; IDs inexistentes ou de terceiros retornam HTTP 404.

Recomendamos consultar a cada 10 ou 20 segundos inicialmente, aplicar recuo (backoff) caso receba HTTP 429 e parar assim que o status for completed ou failed. Para produção, prefira webhooks. Cada exemplo abaixo executa uma consulta única.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusDescrição e restrições
queuedAceito e aguardando na fila de processamento.
generatingGeração em andamento.
completedTarefa concluída com sucesso. Baixe o conteúdo em data.results antes do prazo de expiração.
failedTarefa falhou. Verifique os campos failed_reason e billing_status.
CampoTipoDescrição e restrições
idstring
Identificador único da tarefa. Corresponde ao taskId retornado na criação.
created_atnumber
Data de criação da tarefa em timestamp Unix (segundos).
modelstring
O ID do modelo público utilizado para esta tarefa.
billing_statusstring
status do faturamento: reserved (reservado), charged (cobrado), refunded (reembolsado) ou refund_failed (falha no reembolso).
creditsnumber
Créditos reservados para esta tarefa. Este valor é mantido mesmo após um reembolso; verifique o billing_status para saber o resultado financeiro final.
failed_reasonstring | null
Motivo da falha em tarefas malsucedidas; null nos demais casos. Consultas de tarefas com falha não retornam o objeto data.
dataobject
Presente em consultas de tarefas que não falharam. Contém o resultado gerado e os detalhes de processamento.
data.resultsstring[]
Lista de URLs do vídeo gerado. Fica vazia até a conclusão ou caso o vídeo já tenha expirado.
data.video_expires_atstring | null
Prazo de expiração do vídeo no formato ISO 8601 (retorna null até que esteja disponível). Salve o arquivo gerado antes deste limite.
data.last_frame_urlstring | null
URL do último frame (quando solicitado e disponível), caso contrário retorna null.
data.processing_timenumber | null
Duração do processamento do provedor em segundos (quando disponível), caso contrário retorna null.

Tarefa concluída: resposta da consulta com os resultados do vídeo

Quando a consulta retornar status=completed, significa que a geração do vídeo foi concluída. Recupere as URLs do vídeo em data.results e faça o download antes da data em data.video_expires_at. O status billing_status=charged indica que os créditos reservados foram cobrados.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Tarefa falhou: resposta da consulta com detalhes do erro e cobrança

Quando a consulta retornar status=failed, significa que a geração falhou. Verifique o motivo em failed_reason e o resultado do estorno em billing_status. Neste exemplo, refunded indica que os créditos foram devolvidos. O campo credits mantém o valor original reservado, e a resposta não inclui data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Webhooks

Defina o callback_url na requisição de criação para receber um POST em JSON assim que a tarefa for concluída ou falhar. Responda com status 2xx em até 15 segundos. Envios malsucedidos serão reentados; trate as requisições de forma idempotente utilizando o ID da tarefa.

O seu endpoint de callback deve aceitar requisições POST com um corpo no formato JSON (Content-Type: application/json).

Criar tarefa contendo callback

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Os payloads dos webhooks diferem das respostas de consulta: eles não incluem billing_status e credits; os detalhes de erro e reembolso ficam dentro de data.failed_reason e data.credits_refunded. O campo created_at do webhook indica o horário de envio do evento em timestamp Unix.

Tarefa concluída: payload de callback de sucesso

Quando a geração é bem-sucedida, o callback retorna status=completed. Use o id para identificar a tarefa e data.results para obter as URLs do vídeo. Certifique-se de baixar e salvar os resultados antes do prazo em data.video_expires_at.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Falha na tarefa: payload de callback de erro

Se a geração falhar, o callback retornará status=failed. Utilize o id para identificar a tarefa, data.failed_reason para verificar o motivo do erro e data.credits_refunded para saber a quantidade de créditos reembolsados.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}

Exemplo de código receptor

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Este exemplo em Next.js lê o corpo do callback em JSON e trata diretamente as tarefas concluídas e com falha. Recomendamos implementar persistência e eliminação de duplicidades por ID de tarefa na sua aplicação, além de enfileirar processos demorados antes de responder ao callback.

Requisitos de mídia e limitações

  • Todas as URLs de mídia e de callback devem ser links públicos em HTTPS. Evite usar localhost, IPs privados e arquivos que exijam cookies ou autenticação. As URLs de vídeo/áudio de referência devem apontar diretamente para os arquivos de mídia legíveis.
  • No modo reference-to-video, envie ao menos uma referência, respeitando os limites de até 30 imagens, 10 vídeos, 10 arquivos de áudio e 50 referências combinadas. A duração total de vídeo e de áudio não deve exceder 30 segundos cada.
  • O modo text-to-video desconsidera todas as referências de mídia. O modo image-to-video processa apenas as imagens de primeiro e último frame, ignorando arquivos de vídeo e áudio. Use o modo reference-to-video para combinar mídias.
  • Cada arquivo de áudio ou vídeo de referência deve ter entre 2 e 30 segundos. Para fluxos de edição de vídeo, utilize trechos de origem de pelo menos 4 segundos.

Requisitos de imagem

  • Cada imagem deve ter menos de 30 MB.
  • Formatos aceitos: jpeg, png, webp, bmp, tiff, gif.
  • Proporção (largura ÷ altura): entre 0,4 e 2,5, inclusive.
  • A largura e a altura devem ter entre 300 e 6.000 pixels cada, inclusive.

Requisitos de vídeo

  • Formatos aceitos: mp4, mov.
  • Cada vídeo não deve exceder 100 MB.
  • Taxa de quadros: de 24 a 60 FPS, inclusive.
  • Proporção (largura ÷ altura): entre 0,4 e 2,5, inclusive.
  • Total de pixels (largura × altura): de 407.696 a 8.295.044, inclusive. Por exemplo, 614 × 664 = 407.696 e 3.326 × 2.494 = 8.295.044. Estes são exemplos de contagem de pixels, e não requisitos fixos de largura e altura.

Requisitos de áudio

  • Formatos aceitos: wav, mp3.
  • Cada arquivo de áudio não deve exceder 15 MB.

Erros

Erros de requisição retornam um objeto contendo code e message. Uma tarefa aceita com sucesso ainda pode falhar posteriormente durante o processamento; monitore seu status por consulta ou configure um callback de falha.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPCampoO que fazer
400invalid_request
Corrija a estrutura do JSON, prompts ausentes, intervalos de parâmetros ou URLs de mídia antes de tentar novamente.
401invalid_api_key
Verifique o token Bearer e se a chave de API continua ativa.
402insufficient_credits
Adicione créditos à conta ou reduza o custo da geração. A resposta pode indicar os saldos necessário e disponível.
403forbidden
Verifique a restrição aplicada à conta descrita na mensagem de erro.
404not_found
Confirme se o ID da tarefa está correto e se ela foi criada pela mesma chave de API utilizada.
429rate_limited
Aguarde o tempo indicado no cabeçalho Retry-After antes de realizar novas tentativas.
500internal_error
Examine a mensagem de erro e os logs da API. Reenvie com cautela; novas tentativas de criação geram novas cobranças.

Limites de requisição

Criação de tarefas: por padrão, cada chave de API permite até 100 requisições por minuto. No momento, limites personalizados não estão disponíveis.

Consulta de tarefas: por padrão, cada chave de API permite até 120 requisições por minuto. As requisições de consulta e de criação de tarefas são contabilizadas separadamente.

Respostas com HTTP 429 incluem o cabeçalho Retry-After: 60 para criação e Retry-After: 5 para consultas. Implemente recuo gradual (backoff) e evite consultas mais frequentes do que o recomendado.