Video API
Uma API unificada de geração de vídeos compatível com o padrão OpenRouter Video Generation. Um único esquema cobre geração de texto para vídeo, imagem para vídeo, primeiro/último frame e geração guiada por referências. Envie uma tarefa de forma assíncrona e depois consulte por polling ou receba um webhook quando ela terminar.
| Recurso | Detalhe |
|---|---|
| Base URL | https://api.ofox.ai |
| Estilo de protocolo | Compatível com OpenRouter (envio assíncrono → polling / webhook) |
| Modo de geração | Inferido implicitamente: sem imagens = texto para vídeo · frame_images = imagem / primeiro-último frame · input_references = guiado por referência |
| Entrega do resultado | Poll GET (protegido por limite de taxa) ou webhook callback_url (assinado com HMAC, com novas tentativas) |
| Armazenamento do vídeo | URL original do upstream (temporária) + espelho CDN opcional (URL assinada persistente) |
Autenticação
Toda requisição carrega sua API key da ofox (formato sk-xxx…) no header HTTP:
Authorization: Bearer $OFOX_API_KEYcallback_url deve usar HTTPS. Destinos de webhook são validados contra SSRF — endereços privados, loopback e de metadados de nuvem são rejeitados. Um endereço não HTTPS ou interno falha na criação com 400 invalid_callback_url.
Início rápido
1. Envie uma tarefa
curl -X POST https://api.ofox.ai/v1/videos \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/veo-3.1",
"prompt": "A golden retriever running on the beach at sunset",
"duration": 5,
"resolution": "1080p",
"aspect_ratio": "16:9",
"generate_audio": true
}'A chamada retorna 202 imediatamente com uma URL de polling:
{
"id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718",
"status": "pending",
"polling_url": "https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718"
}2. Consulte por polling até concluir
curl https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718 \
-H "Authorization: Bearer $OFOX_API_KEY"Continue consultando até status chegar a um estado terminal — completed, failed, cancelled ou expired. Não faça polling mais de uma vez por segundo; ou informe um callback_url ao criar a tarefa para receber um webhook em vez de usar polling. Veja Obter status do vídeo e Webhooks.
Endpoints
| Método | Endpoint | Descrição |
|---|---|---|
POST | /v1/videos | Criar uma tarefa de vídeo |
GET | /v1/videos/{id} | Obter status e resultado da tarefa |
DELETE | /v1/videos/{id} | Cancelar uma tarefa |
Preço por segundo
Os modelos de vídeo são cobrados por tempo, não por tokens. A entrada correspondente em pricing.video_pricing.tiers define a tarifa em USD por segundo conforme a resolução, o tipo de entrada e as opções de áudio. pricing.output_video_per_second é apenas o menor preço inicial do modelo. A estimativa é tarifa do nível × duração solicitada; após a conclusão, use usage.video_seconds e usage.video_cost da resposta como segundos cobrados e custo real. Em tarefas de vídeo para vídeo, os segundos cobrados podem incluir a duração do vídeo de entrada.