Video API
Una API unificada de generación de video compatible con el estándar OpenRouter Video Generation. Un solo esquema cubre generación de texto a video, imagen a video, primer/último fotograma y generación guiada por referencias. Envía una tarea de forma asíncrona; luego consulta su estado o recibe un webhook cuando termine.
| Función | Detalle |
|---|---|
| Base URL | https://api.ofox.ai |
| Estilo de protocolo | Compatible con OpenRouter (envío asíncrono → consulta / webhook) |
| Modo de generación | Se infiere implícitamente: sin imágenes = texto a video · frame_images = imagen / primer-último fotograma · input_references = guiado por referencias |
| Entrega del resultado | Consulta con GET (protegida por límite de tasa) o webhook callback_url (firmado con HMAC, con reintentos) |
| Almacenamiento de video | URL original upstream (temporal) + espejo CDN opcional (URL firmada persistente) |
Autenticación
Cada solicitud lleva tu API Key de ofox (formato sk-xxx…) en el header HTTP:
Authorization: Bearer $OFOX_API_KEYcallback_url debe usar HTTPS. Los destinos de webhook se validan contra SSRF: se rechazan direcciones privadas, de bucle local y de metadatos cloud. Una dirección no HTTPS o interna falla al crear la tarea con 400 invalid_callback_url.
Quickstart
1. Envía una tarea
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
}'La llamada devuelve 202 inmediatamente con una URL de consulta:
{
"id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718",
"status": "pending",
"polling_url": "https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718"
}2. Consulta hasta que se complete
curl https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718 \
-H "Authorization: Bearer $OFOX_API_KEY"Sigue consultando hasta que status llegue a un estado terminal: completed, failed, cancelled o expired. No consultes más de una vez por segundo, o pasa un callback_url al crear la tarea para recibir un webhook en lugar de consultar. Consulta Obtener estado del video y Webhooks.
Endpoints
| Método | Endpoint | Descripción |
|---|---|---|
POST | /v1/videos | Crear una tarea de video |
GET | /v1/videos/{id} | Obtener el estado y resultado de la tarea |
DELETE | /v1/videos/{id} | Cancelar una tarea |
Precio por segundo
Los modelos de vídeo se facturan por tiempo, no por tokens. La entrada correspondiente de pricing.video_pricing.tiers define la tarifa en USD por segundo según la resolución, el tipo de entrada y las opciones de audio. pricing.output_video_per_second es solo el precio inicial más bajo del modelo. La estimación es tarifa del nivel × duración solicitada; al finalizar, usa usage.video_seconds y usage.video_cost de la respuesta como segundos facturados y coste real. En tareas de vídeo a vídeo, los segundos facturados pueden incluir la duración del vídeo de entrada.