VidLabDocsDashboard
ReferenceMarkdown

Why a generation failed

A generation that ends with status: "failed" carries an error. A failed generation is never charged: the reservation is released and price_usd only shows what it would have cost. Branch on code; message is written for people and can change.

json
{
  "data": {
    "id": "gen_4Fq9xT2mLr7Kd1sV8bN3pZ0c",
    "object": "generation",
    "status": "failed",
    "model": "bytedance-lipsync",
    "price_usd": 0.45,
    "outputs": [],
    "error": {
      "code": "invalid_input",
      "message": "The `audio` is 12.4 s long, longer than `duration` (9). Send 13.",
      "retryable": false
    },
    "created_at": "2026-11-01T18:04:11.000Z",
    "finished_at": "2026-11-01T18:04:19.000Z"
  }
}
FieldTypeWhat it is
codestringStable. See the table below.
messagestringWhat happened and what to change.
retryablebooleanWhether the same request may work if you send it again. Sending again is a new generation with a new Idempotency-Key; a failed one costs nothing.
reasonstringOnly on content_policy: the kind of block, sexual, minors, copyright, real_person or other.
CodeRetryableWhyFix
content_policyNoThe prompt or a file was blocked by a content policy. reason says which kind.Change the prompt or the input.
invalid_inputNoA file or an option cannot be used: the wrong type, a link that did not open, too large, too long, or longer than duration. The message says which and what to send.Check the file and the model's params, or upload the file.
model_declinedNoThe model is not offered with these options right now.Try other options, such as another resolution or duration.
reference_changedNoThe reference clip is longer than the request was priced for.Send the extra.video_seconds the message gives.
max_cost_exceededNoThe measured price is over your max_cost_usd.Raise max_cost_usd, or lower the resolution or duration.
max_wait_exceededNoNo route could finish inside your max_wait_s.Raise max_wait_s.
model_busyYesNo route can take this model right now.Try again in a few minutes, or use another model.
model_unavailableYesThe model is switched off for the moment.Try again later, or use another model.
all_routes_failedYesEvery route that could take the call turned it away.Try again in a few minutes.
timeoutYesA route did not answer in time, or the generation ran for longer than 6 hours.Try again, or shorten the request.
processing_failedYesThe route could not make it, or the result could not be delivered.Try again, or change the prompt.

Failures that happen before a generation exists (a bad body, no credit) are request errors, see Errors.