Genace

Video generation API model fallback: change models with explicit constraints

Video generation API model fallback is an application policy in the current Genace implementation. A generation request selects one model; the submission service does not automatically walk a fallback chain. If you want another model after a failure, your application must authorize a new request, translate its parameters, and account for another job.

Do not trigger fallback simply because your collector timed out. The original render may still succeed. First establish whether you have a terminal outcome or an ambiguous observation, then decide whether the requested product can tolerate a different model’s constraints.

Check compatibility before choosing a replacement

The current repository exposes three video adapter IDs with different input schemas. These are gateway constraints verified in source, rather than a statement about every capability available directly from the model vendors.

Model IDDurationResolutionAspect ratios
seedance-2.0-fastInteger from 3 through 15 seconds720p or 1080p16:9, 9:16, 1:1, 4:3, 3:4
kling-2.0-standard5 or 10 seconds1080p16:9, 9:16, 1:1
veo38 seconds720p or 1080p16:9, 9:16, 1:1

A five-second Seedance request cannot move unchanged to Veo. A 4:3 request cannot move unchanged to the current Kling adapter. Silent coercion hides a product change from the user and makes it difficult to compare outcomes.

Encode a compatibility decision

function compatibleVideoModel(model, spec) {
  const commonRatio = ['16:9', '9:16', '1:1'].includes(spec.aspect_ratio);
  if (model === 'veo3') {
    return commonRatio && spec.duration_sec === 8 &&
      ['720p', '1080p'].includes(spec.resolution);
  }
  if (model === 'kling-2.0-standard') {
    return commonRatio && [5, 10].includes(spec.duration_sec) &&
      spec.resolution === '1080p';
  }
  return false;
}

This deliberately limited helper checks two candidate replacements. Add tests for your approved specifications and recheck provider schemas when upgrading your integration. A shared seed does not guarantee identical images, motion, or reproducibility across different models.

Define what qualifies for fallback

A structured terminal provider failure may justify another attempt if your budget allows it. Invalid parameters require correcting the request. Insufficient credits require a budget decision. A gateway concurrency rejection requires capacity to become available. None of those conditions is repaired merely by changing the model name.

Preserve a parent request identifier and link the replacement job to the original job. Store the original error, translated parameters, selected replacement, and approved maximum credits. Cap the number of attempts and stop once a compatible result succeeds. If the user must approve a duration or quality change, represent that explicitly in your application flow.

Verification checklist

Test compatible and incompatible duration, resolution, and ratio combinations. Simulate a lost read connection and confirm it does not launch fallback. Confirm that a real replacement uses a new local attempt, a fresh budget reservation, and a separately saved remote identifier.

Read failed job responses, cost budgeting, and duplicate requests.

Continue with production operations

Models covered on this page

Where these facts come from

  • codebase: src/ai/providers/registry.ts
  • codebase: src/ai/providers/seedance.ts
  • codebase: src/ai/providers/kling.ts
  • codebase: src/ai/providers/veo3.ts
  • Editorial keyword hypothesis; search volume not measured