Generate Video
Generate video through nRouter with the async /v1/videos flow, from submit to poll to download, using Veo and Sora through the same key as chat.
Generate high-definition video through an asynchronous 3-step lifecycle (submit, poll, download) via /v1/videos using frontier models including Veo and Sora.
Asynchronous Lifecycle
- Submit Job:
POST /v1/videosreturns a queued job handle:
curl -X POST https://api.nrouter.ai/v1/videos \
-H "Authorization: Bearer $NROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "veo-2.0", "prompt": "Timelapse of city traffic at night in 4K.", "seconds": 5, "size": "1280x720"}'Returns { "id": "nrouter_video_01j89azxckm3287", "status": "queued" }. Options: seconds (5–10), size (1280x720, 1920x1080), fps (24/30), seed.
- Poll Status: Query
GET /v1/videos/{id}every 3–5 seconds until status readscompleted(progress: 100):
curl https://api.nrouter.ai/v1/videos/nrouter_video_01j89azxckm3287 -H "Authorization: Bearer $NROUTER_API_KEY"- Download Video: Stream finalized MP4 binary via
GET /v1/videos/{id}/content:
curl https://api.nrouter.ai/v1/videos/nrouter_video_01j89azxckm3287/content -H "Authorization: Bearer $NROUTER_API_KEY" --output video.mp4Spend logs in Logs record settled charges. See Videos API, Generate Images, and Errors & Rate Limits.
Frequently asked questions
Why is video asynchronous when images are not?
Video generation requires extended render times; an asynchronous job queue prevents long-lived HTTP client timeouts.
Which models can I use?
Veo and Sora models are supported; verify current model availability on the live catalog.
How often should I poll?
Poll every 3 to 5 seconds, backing off toward 10 seconds on long-running renders to avoid rate limiting.
What do I poll with, and where is the cost?
Poll and download using the same virtual key that initiated the job; final spend settles in request logs upon completion.