Get Job Status
Video Generation
Get Job Status
Poll the status of a video generation job
GET
Get Job Status
Retrieve the current status of a video generation job, including per-project progress, completed videos, and final output URLs.
Authentication
Your Nouvel API key. Format:
Bearer nvl_xxxxPath Parameters
The job ID returned from
POST /api/v1/generate.Response
The job UUID.
Overall job status. One of:
| Status | Description |
|---|---|
pending | Job created, not yet started |
running | Generation in progress |
completed | All videos generated successfully |
partial | Some videos completed, some failed |
failed | All videos failed |
cancelled | Job was cancelled |
Overall completion percentage (0-100). Capped at 99 while
status: "running". Reaches 100 only when terminal.Current pipeline stage for running jobs:
preparing- Scraping product page, generating scriptsvideo- Generating lip-synced avatar and product scenesaudio- Synthesizing voiceoverlip_sync- Applying lip sync to match voiceoverstitching- Combining scenes, adding captions, final export
Total number of videos in this job.
Number of videos successfully completed.
Number of videos that failed during generation.
Per-project status summary. Each entry contains:
Detailed results for completed/failed projects. Only populated when job status is terminal (
completed, partial, failed).Example Requests
Response Examples
Polling Best Practices
Poll at regular intervals
Poll at regular intervals
- Poll every 10-15 seconds during generation
- Stop polling when status is terminal:
completed,partial,failed, orcancelled - Use exponential backoff to reduce server load: start at 10s, increase to 15s, then 20s max
The endpoint drives the pipeline forward
The endpoint drives the pipeline forward
This endpoint doesn’t just return status—it actively triggers pipeline progression:
- Checks for scene generation updates
- Initiates post-processing when scenes complete
- Triggers stitching when all scenes are ready
Monitor stage transitions
Monitor stage transitions
Track the
stage field to understand where the job is:preparing(30-60 sec) - Scraping, script generation, visual conceptaudio(10-20 sec) - TTS voiceover synthesis + force alignmentvideo(60-90 sec) - Lip-synced avatar renderingstitching(30-60 sec) - Final render with product slides, transitions, captions
Handle partial failures gracefully
Handle partial failures gracefully
When
status: "partial":- Some videos succeeded, some failed
completedDetailsincludes both successes and failures- Filter by
status: "completed"to get successful videos - Use successful videos; retry failed ones if needed
Implement timeout protection
Implement timeout protection
- Jobs have a 15-minute staleness timeout (no progress)
- Absolute timeout: 30 minutes from creation
- If a job exceeds these limits, it fails automatically
- Build your own client-side timeout (e.g., 25 minutes) to detect stalled jobs
Understanding Progress
Progress calculation:
overallProgress= weighted average of all projects- Each project contributes equally to the overall progress
- Progress is capped at 99% while
status: "running" - Reaches 100% only when terminal
Per-Project Progress Breakdown
| Stage | Progress Range | What’s Happening |
|---|---|---|
preparing | 0-20% | Scraping product page, analyzing content, generating script concept |
generating | 20-70% | Lip-synced avatar rendering + product scene composition |
post_processing | 70-85% | TTS voiceover synthesis, audio mixing, lip sync application |
stitching | 85-99% | Combining scenes, generating captions, final video export |
completed | 100% | Video ready, finalOutputUrl available |
Error Codes
| Code | Description |
|---|---|
| 401 | Invalid or missing API key |
| 404 | Job ID not found |
| 500 | Internal server error |
Webhook Alternative
Next Steps
Once your job reachesstatus: "completed":
- Extract video URLs from
completedDetails[].finalOutputUrl - Download videos for review or local storage
- Publish to social platforms using the Publishing API
- Track performance with built-in analytics

