Get Status
Check the processing status of a short creation request.
GET /shorts/:id/status
Returns the current processing status and progress of a short creation request. Use this endpoint to poll for completion after submitting a request via POST /shorts/create.
Path parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The request ID returned from POST /shorts/create. Must be a valid 24-character hex string. |
Request
Response
While processing
When failed
Response fields
| Field | Type | Description |
|---|---|---|
_id | string | The request ID (same as the requestId from create response) |
status | string | Current processing status (see Status values below) |
step | string | The specific processing step currently being executed (see Processing steps below) |
stepMessage | string | A human-readable description of the current processing step. Display this to your users for a detailed progress indicator. |
progress | number | Processing progress percentage (0–100). Reaches 100 when status is completed. |
userEmail | string | Email of the account that created the request |
failureReason | string | Only present when status is failed. Describes what went wrong. |
isDemo | boolean | Whether this was a demo request |
Note: The
failureReasonfield is only included in the response when the status isfailed. For all other statuses (queued,processing,completed,cancelled), this field is absent from the response.
Status values
The status field transitions through these states during processing:
| Status | Progress | Description |
|---|---|---|
queued | 0 | Request is waiting in the processing queue. A processing slot will be assigned shortly. |
processing | 1–99 | Video is actively being processed — downloading, transcribing, generating captions, rendering clips. |
completed | 100 | All shorts have been generated successfully. Retrieve results with GET /shorts/:id. |
failed | varies | Processing encountered an error. The failureReason field describes what went wrong. |
cancelled | varies | Request was cancelled by the user or via DELETE /shorts/:id. |
Processing steps
The step field provides granular detail about what is currently happening during processing. Use the stepMessage field to display a human-readable label to your users.
step | stepMessage | progress | Description |
|---|---|---|---|
queued | Waiting in queue... | 0 | Request is waiting for a processing slot. |
fetching_video | Fetching video... | 20 | Downloading the source video from the provided URL. |
transcribing_audio | Analyzing video... | 40 | Extracting and transcribing the audio track. |
finding_highlights | Finding interesting segments... | 60 | AI is identifying the most engaging segments for shorts. |
finalizing | Finalizing data... | 80 | Generating final short video clips. |
completed | Task complete! | 100 | All shorts have been generated. |
failed | Processing failed | 0 | An error occurred. Check failureReason for details. |
cancelled | Request cancelled | 0 | The request was cancelled. |
Status flow
Requests start in queued, transition to processing once a worker picks them up, and end in either completed or failed. A request can be cancelled at any point before completion.
Polling strategy
We recommend polling every 10 seconds until the status is a terminal state (completed, failed, or cancelled). Processing typically takes 5–30 minutes depending on:
- Video length — longer source videos take more time to download and transcribe
- Queue position — during peak hours, requests may wait longer in the queue
- Options selected — overlays (game video, meme hooks) add rendering time
Recommended polling implementation
What to do with each status
| Status | Action |
|---|---|
queued | Keep polling. Your request is waiting for a processing slot. |
processing | Keep polling. Display stepMessage and progress to show detailed progress to your users. |
completed | Stop polling. Call GET /shorts/:id to retrieve the generated short videos. |
failed | Stop polling. Read failureReason for details. You can retry by creating a new request with the same parameters. |
cancelled | Stop polling. The request was cancelled and no shorts were generated. |
Polling best practices
- Poll interval: 10 seconds is the recommended minimum. Polling more frequently wastes API calls and may trigger rate limits.
- Timeout: Set a maximum polling duration (e.g., 45 minutes). If a request hasn't completed by then, it likely encountered an issue.
- Show step details: Use
stepMessageto display what the system is currently doing (e.g., "Analyzing video...") alongside theprogresspercentage. - Handle all terminal states: Always check for
failedandcancelledin addition tocompleted. - Rate limits: Status polling uses the "status check" rate limiter. See Rate Limits for details.
Error responses
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | Invalid request ID format (not a valid 24-character hex string) |
| 401 | invalid_api_key | Missing or invalid API key |
| 404 | resource_not_found | Request not found or does not belong to your account |
| 429 | rate_limit_exceeded | Too many status checks — reduce polling frequency |
Common failure reasons
When a request fails, the failureReason field provides details. Common reasons include:
| Failure reason | Description |
|---|---|
| Video download failed | The YouTube URL is no longer available, or the file URL is unreachable |
| Transcription failed | Audio quality was too low for accurate transcription |
| Processing timeout | The video took too long to process (usually very long videos) |
| Internal error | An unexpected server error — retry the request |
If a request fails, you can retry by creating a new request with the same parameters. Failed requests still consume credits.
