Modelos disponibles
| ID | Provider | Precio/seg | Duración default | Max | Audio |
|---|---|---|---|---|---|
google/veo-3.1 | $0.40 | 8s | 8s | ✅ | |
google/veo-3 | $0.20 | 8s | 8s | ❌ | |
fal/veo-3.1 | fal.ai | $0.40 | 8s | 8s | ✅ |
fal/runway-gen-4 | fal.ai | $0.05 | 5s | 10s | ❌ |
fal/luma-ray-2 | fal.ai | $0.20 | 5s | 9s | ❌ |
fal/kling-2 | fal.ai | $0.04 | 5s | 10s | ❌ |
fal/hailuo-02 | fal.ai | $0.04 | 6s | 10s | ❌ |
Patrón de uso
El polling es lazy: el job no avanza solo (Kling/Veo procesan en su lado). Pero el provider sigue trabajando aunque no polees — cuando polees verás el estado actualizado.
Estados del job
| Status | Significado |
|---|---|
pending | Job creado en nuestra DB, aún no enviado al provider |
processing | Provider está renderizando |
completed | Listo. video_url apunta a tu Supabase Storage |
failed | Hubo error. error describe la causa |
completed cobramos el saldo (al precio del modelo × duración × markup × FX).
Si el job falla, no se cobra.
Storage
Igual que imágenes: los videos terminados se suben a tu Supabase Storage (generated-videos) con URLs persistentes y públicas por UUID.
Próximos pasos
POST /v1/videos/generations
Submit de un nuevo video job.
GET /v1/videos/{id}
Poll del estado del job.