windmill-labs/windmill · error
Not supported
Error message
Not supported
What it means
A match statement in the jobs API dispatches on a kind/enum (in the batch/preview job-creation path) and only implements some arms; anything else falls through to a generic `Err(anyhow!("Not supported"))`. It signals that the requested variant is not implemented on this code path (and in OSS builds may be an Enterprise-only variant).
Source
Thrown at backend/windmill-api/src/jobs.rs:7090
Some(job.tag.clone()),
None,
None,
run_query.timeout,
None,
),
JobKind::Script => {
let userdb_authed =
UserDbWithAuthed { db: user_db.clone(), authed: &authed.to_authed_ref() };
script_path_to_payload(
job.script_path(),
Some(userdb_authed),
db.clone(),
&w_id,
run_query.skip_preprocessor,
)
.await?
}
_ => return Err(anyhow::anyhow!("Not supported").into()),
};
if *CLOUD_HOSTED {
tracing::info!("workflow_as_code_tracing id {i} ");
i += 1;
}
let mut extra = HashMap::new();
extra.insert(ENTRYPOINT_OVERRIDE.to_string(), to_raw_value(&entrypoint));
let args = PushArgs { args: &task.args.unwrap_or_else(HashMap::new), extra: Some(extra) };
let scheduled_for = run_query.get_scheduled_for(&db).await?;
let tag = run_query.tag.clone().or(tag).or(Some(job.tag));
if *CLOUD_HOSTED {
tracing::info!("workflow_as_code_tracing id {i} ");
i += 1;View on GitHub (pinned to e474e8803c)
Solutions
- Check the `kind`/variant field you send in the request body against the handled arms in jobs.rs and use a supported one.
- If the kind requires Enterprise, either use an EE-licensed server or drop that feature.
- For preview-like behavior of unsupported kinds, run the underlying script/flow directly and inspect its result.
- If you maintain the code, replace the catch-all arm with an explicit list of supported kinds and a descriptive error naming the unsupported variant.
Example fix
// before
// request: { "kind": "previewscript", ... } on an unsupported path
// after
// request: { "kind": "script", "path": "u/admin/hello", ... } Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED = ['script', 'flow', 'rawscript'];
if (!SUPPORTED.includes(payload.kind)) throw new Error(`kind ${payload.kind} not supported on this endpoint`); Type guard
function isSupportedKind(k) { return ['script', 'flow', 'rawscript'].includes(k); } Try / catch
try {
await jobsPreview(payload);
} catch (e) {
if (String(e).trim() === 'Not supported') {
// fall back to running the underlying script/flow directly
} else throw e;
} Prevention
- Match the kind field to the exact arms handled by the endpoint you call
- Don't send EE-only kinds to OSS servers
- Check server edition before using preview/EE features
When it happens
Trigger: Submitting a job/preview request (via jobs.rs around line 7090) whose kind matches the `_` arm — e.g. a job kind or preview type that is not one of the explicitly handled variants (such as an EE-only kind on an OSS server, or preview of an unsupported kind).
Common situations: Calling the preview/batch endpoint with `kind: "preview"` or an EE-only kind against an OSS deployment; a client sending a new/renamed kind the backend doesn't handle; copy-pasted API calls using a kind valid on one endpoint but not this one.
Related errors
- job {} has no parent flow
- Job ${jobId} was not successful: ${JSON.stringify(error)}
- Failed to re-run job ${id}.
- Completed jobs file must contain an array of jobs
- Failed to push completed jobs: ${e}
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/f65d395f947fa587.
Report an issue: GitHub.