Skip to content

Failures and retries

A video goes through many steps, and each one calls outside providers for images, clips and speech. When a step fails, Scenema tries it again on its own. When a provider is down, the video waits for it. Only when that does not work does the video fail, and most failures can then be retried without losing what was already made.

When a provider is down

If a step keeps failing because a provider is down (it times out, is overloaded, or answers with a server error), the video does not fail. It stays processing with the stage waiting, and waiting says since when and why:

{
"status": "processing",
"stage": "waiting",
"waiting": { "since": "2026-10-30T09:12:44.000Z", "reason": "503 Service Unavailable" }
}

Scenema tries the step again every few minutes, and the video carries on by itself once the provider answers. The time spent waiting does not count against the video’s 3 hour limit. After 6 hours of waiting, the video fails with PROVIDER_OUTAGE, which can be retried later.

No webhook is sent while a video waits. The video’s video.completed or video.failed arrives when it ends, as usual.

When a video fails

A failed video reads "status": "failed", with error saying what happened, errorCode naming it, and retryable saying whether a retry can fix it.

errorCode What happened retryable
PROVIDER_FAILED A step failed again and again, on the provider’s side. yes
PROVIDER_OUTAGE A provider was down for 6 hours. yes
EXPORT_FAILED The video could not be exported. yes
DEADLINE_EXCEEDED The video did not finish within 3 hours. yes
INSUFFICIENT_CREDITS A step could not be paid for. Top up the workspace, then retry. yes
TRANSCRIPTION_FAILED The audio could not be transcribed. yes
SOUNDTRACK_FAILED The soundtrack could not be analyzed. yes
START_FAILED The video did not start. yes
CONTENT_REFUSED A provider refused the content. Change the audio or prompt and make a new video. no
ACCOUNT_BLOCKED The account cannot make videos. no
PIPELINE_HELD Scenema held the video back: a step failed or started too often, or the team paused it. Contact support. no

A failed video charges only what the providers already did for it; the rest of its price goes back to the balance.

Retry a failed video

Terminal window
curl -X POST "https://api.scenema.ai/v1/videos/proj_7c2e91a04b6d3f8/retry" \
-H "Authorization: Bearer $SCENEMA_API_KEY" \
-H "Idempotency-Key: retry-7c2e-1"

The answer is the video, back in processing, with attempt one higher. The video picks up where it stopped: its storyboard, designs, images and clips are all kept, and only what is missing is made. It gets a fresh 3 hour limit. When it ends, video.completed or video.failed arrives again for this attempt.

A video can be retried up to 3 times, within 7 days of its failure. Send an Idempotency-Key to retry safely: the same key answers the same retry and starts nothing more.

What a retry costs

A video never costs more than one video, however many tries it takes. A retry holds what is left of the video’s price: the price minus what the failed attempts were charged. When the retry completes, the video has cost exactly its price. credits on the video adds up every attempt.

When the workspace cannot hold what is left, the retry answers 402 INSUFFICIENT_CREDITS and the video stays failed.

A new aspect ratio that fails leaves the video completed in the ratio it had; the ratio reads failed in formats. POST /v1/videos/{id}/retry, or a PATCH to that ratio again followed by POST /v1/videos/{id}/generate, retries it the same way: it reuses every keyframe and clip already made for that ratio and holds what is left of the new ratio’s price, so the new ratio never costs more than once.

When a retry is refused

Status Code When
409 VIDEO_NOT_FAILED The video is still being made, or has completed.
409 VIDEO_NOT_RETRYABLE The failure cannot be fixed by a retry (retryable is false). Make a new video.
409 RETRY_LIMIT_REACHED The video was retried 3 times. Make a new video.
409 RETRY_WINDOW_PASSED The video failed more than 7 days ago. Make a new video.
402 INSUFFICIENT_CREDITS The workspace cannot hold what is left of the price.