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.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonDefina 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"| Status | Descrição e restrições |
|---|---|
queued | Aceito e aguardando na fila de processamento. |
generating | Geração em andamento. |
completed | Tarefa concluída com sucesso. Baixe o conteúdo em data.results antes do prazo de expiração. |
failed | Tarefa falhou. Verifique os campos failed_reason e billing_status. |
| Campo | Tipo | Descrição e restrições |
|---|---|---|
id | string | Identificador único da tarefa. Corresponde ao taskId retornado na criação. |
created_at | number | Data de criação da tarefa em timestamp Unix (segundos). |
model | string | O ID do modelo público utilizado para esta tarefa. |
billing_status | string | status do faturamento: reserved (reservado), charged (cobrado), refunded (reembolsado) ou refund_failed (falha no reembolso). |
credits | number | 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_reason | string | null | Motivo da falha em tarefas malsucedidas; null nos demais casos. Consultas de tarefas com falha não retornam o objeto data. |
data | object | Presente em consultas de tarefas que não falharam. Contém o resultado gerado e os detalhes de processamento. |
data.results | string[] | Lista de URLs do vídeo gerado. Fica vazia até a conclusão ou caso o vídeo já tenha expirado. |
data.video_expires_at | string | 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_url | string | null | URL do último frame (quando solicitado e disponível), caso contrário retorna null. |
data.processing_time | number | 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."
}
}| HTTP | Campo | O que fazer |
|---|---|---|
| 400 | invalid_request | Corrija a estrutura do JSON, prompts ausentes, intervalos de parâmetros ou URLs de mídia antes de tentar novamente. |
| 401 | invalid_api_key | Verifique o token Bearer e se a chave de API continua ativa. |
| 402 | insufficient_credits | Adicione créditos à conta ou reduza o custo da geração. A resposta pode indicar os saldos necessário e disponível. |
| 403 | forbidden | Verifique a restrição aplicada à conta descrita na mensagem de erro. |
| 404 | not_found | Confirme se o ID da tarefa está correto e se ela foi criada pela mesma chave de API utilizada. |
| 429 | rate_limited | Aguarde o tempo indicado no cabeçalho Retry-After antes de realizar novas tentativas. |
| 500 | internal_error | Examine a mensagem de erro e os logs da API. Reenvie com cautela; novas tentativas de criação geram novas cobranças. |