Three changes that together remove most visible failures from the generator. The 30 day analysis showed that 59% of video failures come from transient Fal infrastructure issues (downstream service unavailable / downstream service error) where the same prompt would succeed on the next attempt. Users were absorbing this themselves by clicking Retry over and over.
Auto retry on transient Fal errors
When Fal returns a downstream outage or 5xx, the server now retries silently up to 3 times with exponential backoff (2s, 8s, 30s). The UI shows a "Retrying..." state during this. Permanent errors (content policy rejection, parameter validation, model refusal) skip the loop and fail immediately so the user gets feedback they can act on. Applies to text to image, text to video, image to image, image to video, video extend, and both upscaler tools.
Retry button restores all inputs
The video generator's Retry button was only restoring prompt, model, aspect ratio, and duration. Reference images, character refs, resolution, and audio settings were silently dropped. Multiple users hit this when retrying a failed generation: the second attempt would run as plain text to video instead of image to video. Now all inputs are restored, matching the existing image generator behavior. The retry also tries a server side recovery from Fal first in case the original generation actually completed but the webhook was lost.
Failure states differentiated by cause
Every failed asset used to show the same red "Generation failed" tile. Now the color and hint reflect the cause:
- Orange: transient Fal issue. "Try again, provider was busy."
- Amber: model declined the prompt or output. "Try a different prompt or another model."
- Red: parameter / input validation. "Edit the inputs and retry."
- Default: legacy assets without classified error context.
The hint sits below the error message so users know what to do without having to guess.




