{"record":{"id":"e1dab3aa1cc056a2","repo":"openclaw/openclaw","slug":"deepinfra-video-generation-does-not-support-video","errorCode":null,"errorMessage":"DeepInfra video generation does not support video reference inputs.","messagePattern":"DeepInfra video generation does not support video reference inputs\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"extensions/deepinfra/video-generation-provider.ts","lineNumber":212,"sourceCode":"          seed: \"number\",\n          negative_prompt: \"string\",\n          negativePrompt: \"string\",\n          style: \"string\",\n        },\n      },\n      imageToVideo: {\n        enabled: false,\n      },\n      videoToVideo: {\n        enabled: false,\n      },\n    },\n    async generateVideo(req) {\n      if ((req.inputImages?.length ?? 0) > 0) {\n        throw new Error(\"DeepInfra video generation currently supports text-to-video only.\");\n      }\n      if ((req.inputVideos?.length ?? 0) > 0) {\n        throw new Error(\"DeepInfra video generation does not support video reference inputs.\");\n      }\n      const auth = await resolveApiKeyForProvider({\n        provider: \"deepinfra\",\n        cfg: req.cfg,\n        agentDir: req.agentDir,\n        store: req.authStore,\n      });\n      if (!auth.apiKey) {\n        throw new Error(\"DeepInfra API key missing\");\n      }\n\n      const model = normalizeDeepInfraModelRef(req.model, defaultModel);\n      const deadline = createProviderOperationDeadline({\n        timeoutMs: req.timeoutMs,\n        label: \"DeepInfra video generation\",\n      });\n      const { baseUrl, allowPrivateNetwork, headers, dispatcherPolicy } =\n        resolveProviderHttpRequestConfig({","sourceCodeStart":194,"sourceCodeEnd":230,"githubUrl":"https://github.com/openclaw/openclaw/blob/01804a75319da4b69c9ab98ceaa30477e22b8c0b/extensions/deepinfra/video-generation-provider.ts#L194-L230","documentation":"Thrown at the top of generateVideo (extensions/deepinfra/video-generation-provider.ts:212) when req.inputVideos contains one or more entries. The DeepInfra video provider declares videoToVideo.enabled = false. The guard fires synchronously before any network call.","triggerScenarios":"A VideoGenerationRequest with inputVideos.length > 0 is sent to the DeepInfra video provider's generateVideo method.","commonSituations":"Caller assumes video-to-video is supported; a dispatcher forwards video references to all providers; UI exposes a video-reference upload that routes to an unsupported provider.","solutions":["Check provider.capabilities.videoToVideo.enabled before attaching input videos.","For text-to-video with DeepInfra, omit inputVideos (or pass an empty array).","Route video-to-video requests to a provider that declares videoToVideo.enabled = true."],"exampleFix":"// before\nawait provider.generateVideo({ prompt, inputVideos: [{ buffer, mimeType: \"video/mp4\" }] });\n\n// after\nawait provider.generateVideo({ prompt });","handlingStrategy":"validation","validationCode":"if (provider.capabilities?.videoToVideo?.enabled === false && (req.inputVideos?.length ?? 0) > 0) {\n  throw new Error(`${provider.id} does not support video-to-video`);\n}","typeGuard":"function supportsVideoToVideo(provider: { capabilities?: { videoToVideo?: { enabled?: boolean } } }): boolean {\n  return provider.capabilities?.videoToVideo?.enabled === true;\n}","tryCatchPattern":null,"preventionTips":["Always consult provider.capabilities before sending reference videos.","Filter providers by videoToVideo capability in your dispatch layer.","DeepInfra video is text-to-video only as of the current surface."],"tags":["deepinfra","video-generation","video-to-video","capabilities"],"backgroundTag":null,"analyzedSha":"01804a75319da4b69c9ab98ceaa30477e22b8c0b","analyzedAt":"2026-08-12T04:37:58.197Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}