Pular para a documentação
Nesta página

Documentação

Desenvolva com a API do Seevio

Adicione geração de vídeo ao seu produto. Escolha um modelo, envie uma requisição e obtenha o resultado via consulta ativa (polling) ou webhook.

Escolha um modelo

Cada referência de modelo inclui seus parâmetros completos, preços e exemplos. Você pode concluir a integração diretamente da página do modelo.

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

Este exemplo gera um vídeo de 5 segundos em 720p com o Seedance 2.5. Acesse a referência do modelo para ver todos os modos de geração e limites de parâmetros.

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
}

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

Para integrações em produção, informe um callback_url ao criar uma tarefa. Toda referência de modelo inclui exemplos de payload de retorno e de código receptor.

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.

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.