Skip to main content
Unlike chat and images, video takes 30s to 5min depending on the model. So the flow is asynchronous with two endpoints:

Available models

Usage pattern

Polling is lazy: the job doesn’t advance on its own (Kling/Veo process on their side). But the provider keeps working even if you don’t poll — when you do poll you’ll see the updated state.

Job states

We only charge the balance when status reaches completed (at model price × duration × markup × FX). If the job fails, you’re not charged.

Storage

Same as images: finished videos upload to your Supabase Storage (generated-videos) with persistent public UUID-based URLs.

Next steps

POST /v1/videos/generations

Submit a new video job.

GET /v1/videos/{id}

Poll the job status.