A failed generation is frustrating mainly because the message rarely tells you which of several unrelated things went wrong. In practice almost every failure falls into one of five categories, and they need completely different responses. Knowing which one you are looking at saves both credits and the temptation to rewrite a prompt that was never the problem.
Start a generationModels do not share a vocabulary for size. Some accept a resolution band, some an aspect ratio, some explicit dimensions — and a combination that is valid on one model is meaningless on another. This is the most common silent failure, because it can also succeed and hand back a correctly-generated image in the wrong proportions. If the output is the right subject at the wrong shape, this is your category, and the fix is to set the shape explicitly rather than to change the prompt.
Image-to-image and image-to-video templates need a source image, and some need more than one. A template that appears to do nothing when you press generate is usually waiting for an upload slot that has not been filled. This one costs nothing but time, and it is worth checking before assuming anything is broken.
Cost scales with duration and resolution, so the same template can be affordable at one setting and out of reach at another. A generation that stops before starting, with nothing produced, is usually this. Lowering duration first is the fastest way to bring a template back into range, and it is also the setting most likely to improve the result.
Hosted models are retired by their providers, sometimes without notice, and a model that worked last month can stop existing. We probe our catalogue for this and hide endpoints that have gone, but there is always a window between a provider closing a route and us noticing. If a specific template fails repeatedly while others succeed, this is the likely cause — switching to another template in the same family is the immediate workaround.
Every hosted model applies its own filters, and they differ from each other and from ours. A refusal is not the same as an error: it means the request was understood and declined. Rewording rarely helps if the subject itself is out of scope, and it is worth reading the response rather than assuming a technical fault — the two look similar from the outside and need opposite responses.
This is the one people do not count as a failure, and it is the most expensive category by volume because it consumes credits every time. A generation that returns a clean, well-rendered result that is not what you asked for is almost never a model fault — it is an instruction the model never received. The usual culprits are an unstated shape, a motion described as an adjective rather than a movement, or an image-to-video prompt that re-describes the subject and so invites it to be reinterpreted. Before assuming the model is weak, check what the prompt actually specified rather than what you meant by it.
Identical requests do not always produce identical results, so a retry occasionally succeeds where the first attempt did not. That is worth knowing, and it is also a trap: if the cause is a missing input, an unavailable model or a setting that is out of range, retrying is guaranteed to fail again and will keep costing you. A single retry is a reasonable test of whether you hit transient noise. A third attempt with nothing changed is not a strategy — by then, the answer is that something in the request needs to be different.
A quick way to localise a problem: run a different template that uses a different model family, with the simplest possible settings. If that works, the issue is specific to the first template or model, and the fastest fix is to use a different one rather than to keep debugging. If that also fails, the problem is more likely in the shared path — inputs, balance, or the request itself — and the checks below will find it faster than any amount of prompt rewriting.
Almost always an unfilled upload slot on a template that requires a source image. Check every slot before assuming a fault.
The aspect ratio was probably never set. Resolution and aspect ratio are separate controls on most models, and an unset shape gets chosen for you.
That pattern points at the model behind that template rather than at your request — most often a provider retiring the endpoint. Use another template in the same family.
A generation that never started does not. One that produced a result you did not want does, which is why testing at short duration and lower resolution first is worth the habit.
Not if the subject itself is out of scope. Refusals and technical errors look alike from the outside but need opposite responses — one needs a different request, the other needs different settings.











