What we already retry
Every model call gets one transparent retry on a transient failure (timeout, model returned no image). You only see a "Generation failed" message when both attempts fail to produce a usable headshot.
Common causes
The face in your source photo was not detected (severe blur, extreme angle, very low light), the model refused on safety grounds (it occasionally over-refuses on perfectly normal portraits), or the provider returned a transient HTTP error.
What to do
Try once more with a different source photo — softer light, more neutral expression, head-and-shoulders crop. If two attempts in a row fail, write to hello@keva.studio with the shoot id (visible in the URL after the failure). We can issue a redo where available or refund the charge through Stripe — your choice.
What does not happen
We do not silently double-charge you. A payment-side or checkout failure does not consume a shoot. Once a generation request is accepted and queued, support can review failed shoots and issue the appropriate redo or refund.