Referência de API
Autenticação
Todas as solicitações da API exigem uma API key. Você pode obtê-la em Settings > API Keys.
Formatos suportados:
| Método | Formato |
|---|---|
| Bearer Token | Authorization: Bearer sk-xxx |
| Token Header | Authorization: Token sk-xxx |
| X-API-Key | X-API-Key: sk-xxx |
| Query Parameter | ?api_key=sk-xxx |
Lembretes de segurança:
- nunca exponha sua API key em código cliente
- faça sempre as chamadas da API a partir do servidor
Visão geral dos endpoints
| Método | Endpoint | Uso |
|---|---|---|
| POST | /api/v1/video | Criar uma tarefa permanente de vídeo |
| GET | /api/v1/video | Listar tarefas de vídeo |
| GET | /api/v1/video/:taskId | Ler detalhes de uma tarefa |
| DELETE | /api/v1/video/:taskId | Excluir uma tarefa de vídeo |
| POST | /api/v1/video/:taskId/render | Disparar renderização |
| POST | /api/v1/upload | Enviar assets |
| GET | /api/v1/files | Listar arquivos |
| DELETE | /api/v1/files/:fileId | Excluir um arquivo |
| GET | /api/v1/credits | Consultar saldo de créditos |
| POST | /api/v1/preview | Criar preview temporária |
| GET | /api/v1/preview/:tempId | Ler configuração da preview |
| DELETE | /api/v1/preview/:tempId | Excluir preview |
| POST | /api/v1/preview/:tempId/convert | Converter preview em tarefa permanente |
| POST | /api/v1/preview/:tempId/render | Converter preview e renderizar |
POST /api/v1/video
Cria uma tarefa permanente de vídeo a partir da sua configuração. Esta operação ainda não inicia a renderização.
Campos importantes:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
config | object | Sim | Schema de vídeo conforme o JSON Schema |
metadata | object | Não | Metadados personalizados anexados à tarefa |
Campos de resposta mais úteis:
taskIdvideoTaskIdpreviewUrlviewerUrlconfigUrlstatusqualitywidthheightduration
GET /api/v1/video
Lista todas as tarefas de vídeo da conta atual.
Parâmetros de query:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
page | integer | 1 | Número da página |
limit | integer | 20 | Itens por página, máximo 100 |
status | string | - | Filtra pelo status mais recente |
A resposta contém uma lista tasks e um objeto pagination.
GET /api/v1/video/:taskId
Recupera os detalhes completos de uma tarefa específica de vídeo.
Campos de retorno úteis:
taskIdvideoTaskIdstatusvideoUrlpreviewUrlviewerUrlconfigUrlcostCreditscreatedAtcompletedAtmetadata
Valores de status:
| Status | Significado |
|---|---|
created | Tarefa criada, render ainda não iniciado |
rendering | Renderização em andamento |
completed | Render concluído com sucesso |
failed | Falha no render |
DELETE /api/v1/video/:taskId
Exclui permanentemente uma tarefa e os registros locais de render associados. A API também tenta excluir a tarefa remota upstream.
Campos de resposta importantes:
deletedremoteDeletedmessage
Se a exclusão upstream falhar, a exclusão local ainda pode ter sido concluída corretamente.
POST /api/v1/video/:taskId/render
Inicia ou reinicia a renderização de uma tarefa existente.
Corpo da requisição:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
webhook_url | string | Não | - | URL para notificação de conclusão |
num_workers | integer | Não | 5 | Número de workers de renderização |
Resultados possíveis:
- uma nova renderização com
status: rendering - uma resposta reaproveitando um render já concluído com
alreadyRendered: true
Erros frequentes:
NOT_FOUNDALREADY_RENDERINGINSUFFICIENT_CREDITSRENDER_TRIGGER_FAILED
Webhooks
webhook_url é suportado em:
POST /api/v1/video/:taskId/renderPOST /api/v1/preview/:tempId/render
Fluxo de funcionamento:
- sua
webhook_urlé salva junto da tarefa de render - o renderer upstream retorna
completedoufailed - o projeto atualiza primeiro o banco local
- em seguida envia um
POSTpara a suawebhook_url
O payload reenviado normalmente inclui:
taskIdrenderTaskIdstatusvideoUrlerrortimestamp
Limitações atuais:
- apenas
completedefailedsão reenviados webhook_urlprecisa ser uma URL absoluta válida- ainda não existe assinatura de webhook
- ainda não existe fila de retry nem log de entrega
POST /api/v1/upload
Permite enviar imagens, vídeos e áudios para uso posterior em configurações de vídeo.
Campos do formulário:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
file | File | Não* | Arquivo único |
files | File[] | Não* | Vários arquivos |
*Pelo menos um entre file ou files é obrigatório.
Famílias MIME suportadas:
image/*video/*audio/*
Limites de armazenamento por plano:
| Plano | Limite |
|---|---|
| Free | 512 MB |
| Starter | 10 GB |
| Standard | 20 GB |
| Pro | 50 GB |
A resposta de sucesso inclui count e uma lista assets.
GET /api/v1/files
Lista os arquivos enviados para o proprietário atual da API key.
Parâmetros de query:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
page | integer | 1 | Número da página |
limit | integer | 20 | Itens por página |
type | string | - | image, video ou audio |
A resposta inclui files e pagination.
DELETE /api/v1/files/:fileId
Exclui permanentemente um arquivo da biblioteca. Tanto o objeto armazenado quanto o registro do arquivo são removidos.
Campos de resposta úteis:
fileIddeletedmessage
GET /api/v1/credits
Recupera o saldo atual de créditos da conta.
Resposta típica:
{
"success": true,
"credits": 985,
"currency": "credits"
}POST /api/v1/preview
Cria uma preview temporária sem consumir créditos.
Regras importantes:
- o schema completo do vídeo é enviado diretamente no body
- links de preview duram 7 dias
- a preview não consome créditos
- a preview não gera arquivo de vídeo para download
Campos de resposta:
tempIdpreviewUrlviewerUrlexpiresIn
GET /api/v1/preview/:tempId
Lê a configuração por trás de um link temporário de preview.
Campos de retorno:
tempIdconfig
DELETE /api/v1/preview/:tempId
Exclui um link temporário de preview.
Campos de retorno:
tempIddeletedmessage
POST /api/v1/preview/:tempId/convert
Clona uma preview temporária em uma tarefa permanente de vídeo. A preview temporária continua disponível.
Corpo opcional:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
category | string | Não | Categoria associada à nova tarefa |
Campos de retorno mais úteis:
convertedtaskIdvideoTaskIdpreviewUrlviewerUrlconfigUrl
POST /api/v1/preview/:tempId/render
Clona uma preview temporária em uma tarefa permanente e dispara imediatamente a renderização.
Corpo da requisição:
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
category | string | Não | api | Categoria da nova tarefa |
webhook_url | string | Não | - | Webhook para o resultado do render |
num_workers | integer | Não | 5 | Número de workers de renderização |
Resposta de sucesso típica:
converted: truetaskIdrenderTaskIdstatus: renderingcostremainingCreditspreviewUrlviewerUrl
Cálculo de créditos
A regra de custo é:
- custo = duração do vídeo em segundos × multiplicador de qualidade
| Qualidade | Lado curto | Multiplicador |
|---|---|---|
| 720p | <= 720px | 1.0 |
| 1080p | <= 1080px | 1.5 |
| 2K | <= 1440px | 2.0 |
A qualidade é determinada automaticamente a partir da menor dimensão do vídeo.
Formato de erro
Todas as respostas de erro seguem este formato:
{
"success": false,
"error": "Human-readable error message",
"code": "ERROR_CODE",
"details": {
"field": "additional context"
}
}Códigos de erro frequentes:
MISSING_API_KEYINVALID_API_KEYINVALID_API_KEY_FORMATAPI_KEY_INACTIVEUSER_NOT_FOUNDINVALID_REQUESTINVALID_CONFIGINSUFFICIENT_CREDITSNOT_FOUNDALREADY_RENDERINGREMOTE_ERRORRENDER_TRIGGER_FAILEDINTERNAL_ERROR