Bridge by Wekoya / Docs / Media
Video
Updated
Filmed-looking clips with sound, from a description and optionally a first frame, by Google's Veo, on POST /v1/videos/generations. A video takes from about ten seconds to a few minutes, so you get an id at once and ask for it with GET /v1/videos/generations/<id> until status is succeeded or failed; or listen for the video.succeeded and video.failed webhooks.
# Start a video: answered at once with an id
curl https://wekoya-api.wekoya.tech/v1/videos/generations \
-H "Authorization: Bearer $WEKOYA_API_KEY" -H "Content-Type: application/json" \
-d '{ "model": "veo-3.1-fast", "prompt": "A chef plating jollof rice in a busy Lagos kitchen, close-up",
"duration_seconds": 8, "aspect_ratio": "9:16" }'
{ "id": "video_8f1c…", "object": "video.generation", "status": "queued", "held": { "amount": 1404, "currency": "NGN" }, … }
# Ask until it is done (every 10 seconds is plenty; most take 20 s to 2 min)
curl https://wekoya-api.wekoya.tech/v1/videos/generations/video_8f1c… -H "Authorization: Bearer $WEKOYA_API_KEY"
{ "id": "video_8f1c…", "status": "succeeded", "duration_seconds": 8, "aspect_ratio": "9:16", "resolution": "720p",
"video": { "url": "https://wekoya-api.wekoya.tech/files/videos/8f1c….mp4?token=…",
"mime_type": "video/mp4", "expires_at": "2026-10-18T15:02:11.000Z" },
"wekoya": { "cost": 1404, "currency": "NGN" } }model:veo-3.1-fast(the default),veo-3.1-lite(cheapest) orveo-3.1(best).duration_seconds: 4, 6 or 8 (the default).aspect_ratio:16:9(the default) or9:16; square is not available.resolution:720p(the default),1080por4k; the last two only at 8 seconds, and Lite makes no 4K.image: the first frame, as base64, a data URL or an https address (PNG, JPEG or WebP).- Veo always adds a soundtrack;
audio: falseis refused. Mute the video when you play it if you do not want sound.
The video
video.url plays in a <video> tag or a browser with no key, and seeking works. It stops working at expires_at, two days after the video was made: Bridge keeps no copy, so download it and store it yourself if you need it longer. With your key, GET /v1/videos/generations/<id>/content returns the same file. GET /v1/videos/generations lists your recent videos. Up to 10 at once per account.
What it costs
Per second of video, by model and resolution: see Models & pricing, or GET /v1/models?type=video. The price for the seconds you ask for is held when the video starts and charged when it is made. A video that fails or is blocked by the safety rules costs nothing (error.code says which: content_policy, generation_failed or timed_out). Guest keys need the videos use.