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 ID | Duration | Resolution | Aspect ratios |
|---|---|---|---|
| seedance-2.0-fast | Integer from 3 through 15 seconds | 720p or 1080p | 16:9, 9:16, 1:1, 4:3, 3:4 |
| kling-2.0-standard | 5 or 10 seconds | 1080p | 16:9, 9:16, 1:1 |
| veo3 | 8 seconds | 720p or 1080p | 16: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