conductor-oss/conductor · error · UnsupportedOperationException
Video generation not supported by this provider
Error message
Video generation not supported by this provider
What it means
The default AIModel.generateVideo throws UnsupportedOperationException. AIModel is an interface with default methods so providers opt into video generation by overriding generateVideo; the default implementation exists so providers that do not support video fail loudly rather than silently returning null. Calling it on a provider that has not overridden the method is the trigger.
Source
Thrown at ai/src/main/java/org/conductoross/conductor/ai/AIModel.java:186
.size(input.getSize())
.build();
}
/**
* @return Model to generate videos
*/
default VideoModel getVideoModel() {
return null; // Default: video generation not supported
}
/**
* Generate video (async job submission)
*
* @param request Video generation request
* @return Response with job ID
*/
default LLMResponse generateVideo(VideoGenRequest request) {
throw new UnsupportedOperationException("Video generation not supported by this provider");
}
/**
* Check video generation job status (polling)
*
* @param request Video generation request with jobId
* @return Response with current status or completed video
*/
default LLMResponse checkVideoStatus(VideoGenRequest request) {
throw new UnsupportedOperationException("Video generation not supported by this provider");
}
default LLMResponse generateAudio(AudioGenRequest request) {
throw new UnsupportedOperationException();
}
default List<ToolCallback> getToolCallback(ChatCompletion input) {
if (input.getTools() == null || input.getTools().isEmpty()) {View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Select an AIModel whose getVideoModel() returns non-null (i.e. a provider that overrides generateVideo).
- Guard with a capability check before calling: `if (model.getVideoModel() == null) throw/branch;`.
- If your provider supports video, override generateVideo in its AIModel implementation.
Example fix
// before
LLMResponse r = aiModel.generateVideo(req); // on a text-only provider
// after
if (aiModel.getVideoModel() == null) {
throw new IllegalStateException("provider does not support video");
}
LLMResponse r = aiModel.generateVideo(req); Defensive patterns
Strategy: type-guard
Validate before calling
if (aiModel.getVideoModel() == null) {
throw new IllegalStateException(
"provider " + aiModel.getClass().getSimpleName() + " does not support video");
}
LLMResponse r = aiModel.generateVideo(request); Type guard
boolean supportsVideo(AIModel m) {
return m.getVideoModel() != null;
} Try / catch
try {
return aiModel.generateVideo(request);
} catch (UnsupportedOperationException e) {
return notImplemented(e.getMessage()); // or branch to a video-capable model
} Prevention
- Always gate generateVideo with a getVideoModel() capability check.
- Route video tasks only to providers that override generateVideo.
- Document which AIModel implementations support video.
When it happens
Trigger: Invoking aiModel.generateVideo(request) on a provider's AIModel instance that has not overridden the method (e.g. a text-only LLM provider). The request is a VideoGenRequest describing the desired clip.
Common situations: Workflow/config selected a text or image model for a video-generation task; a generic code path calls generateVideo without first checking getVideoModel() for capability; a new provider was added without video support but routing allows it.
Related errors
- Not supported
- Failed to submit video generation:
- Failed to check video status:
- Empty response downloading image from
- Failed to download image from
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/82314031290545f4.
Report an issue: GitHub.