n8n-io/n8n · error · NodeOperationError

Failed to create video task: ${createResponse.base_resp?.sta

Error message

Failed to create video task: ${createResponse.base_resp?.status_msg || 'Unknown error'}

What it means

Thrown by the MiniMax image-to-video (i2v) operation after POST /video_generation when createResponse.base_resp.status_code is non-zero. Same base_resp pattern as other MiniMax operations: status_msg carries the upstream reason, 'Unknown error' is the fallback. This specifically covers task creation rejection — the asynchronous video job was never accepted.

Source

Thrown at packages/@n8n/nodes-langchain/nodes/vendors/MiniMax/actions/video/generate.i2v.operation.ts:330

		body.subject_reference = [
			{
				image: await resolveImageInput(
					this,
					itemIndex,
					subjectRefInputType,
					(options.subjectReferenceImageUrl as string) || '',
					(options.subjectReferenceBinaryPropertyName as string) || 'subjectReference',
				),
			},
		];
	}

	const createResponse = (await apiRequest.call(this, 'POST', '/video_generation', {
		body,
	})) as VideoGenerationResponse;

	if (createResponse.base_resp?.status_code !== 0) {
		throw new NodeOperationError(
			this.getNode(),
			`Failed to create video task: ${createResponse.base_resp?.status_msg || 'Unknown error'}`,
		);
	}

	const taskId = createResponse.task_id;
	if (!taskId) {
		throw new NodeOperationError(
			this.getNode(),
			'No task_id returned from video generation request',
		);
	}

	const { fileId } = await pollVideoTask.call(this, taskId);
	const videoUrl = await getVideoDownloadUrl.call(this, fileId);

	const jsonData: IDataObject = {
		videoUrl,

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Read status_msg in the error for the exact rejection reason.
  2. Verify reference image URLs are publicly reachable and in a supported format (PNG/JPEG).
  3. Confirm model and resolution are enabled for the account tier.
  4. Check video-generation credits and API key scopes.
  5. Ensure the binary property names in options match the actual item binary keys.
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED_I2V_MODELS = ['video-01-live2d', 'video-01'] as const;
const SUPPORTED_RESOLUTIONS = ['720p', '1080p'] as const;
function validateI2vInput(opts: {
  model?: string; resolution?: string;
  firstFrameImageUrl?: string; firstFrameBinaryPropertyName?: string;
  subjectReferenceImageUrl?: string;
}) {
  if (opts.model && !SUPPORTED_I2V_MODELS.includes(opts.model as never)) return `model '${opts.model}' is not recognized for i2v`;
  if (opts.resolution && !SUPPORTED_RESOLUTIONS.includes(opts.resolution as never)) return `resolution '${opts.resolution}' is not recognized`;
  const hasFirstFrame = !!opts.firstFrameImageUrl || !!opts.firstFrameBinaryPropertyName;
  if (!hasFirstFrame && !opts.subjectReferenceImageUrl) {
    return 'i2v requires a first frame or subject reference image';
  }
  return null;
}

Type guard

function isPublicImageUrl(u: unknown): u is string {
  if (typeof u !== 'string' || u.length === 0) return false;
  try { const p = new URL(u); return p.protocol === 'http:' || p.protocol === 'https:'; } catch { return false; }
}

Try / catch

const createResponse = (await apiRequest.call(this, 'POST', '/video_generation', { body })) as VideoGenerationResponse;
if (createResponse.base_resp?.status_code !== 0) {
  throw new NodeOperationError(
    this.getNode(),
    `Failed to create video task: ${createResponse.base_resp?.status_msg || 'Unknown error'}`,
  );
}

Prevention

When it happens

Trigger: Reference image URL unreachable or in an unsupported format; prompt triggers moderation; model/resolution/first_frame_image combination unsupported; account out of video-generation credits; API key lacks video permission; subject/first-frame image binary property empty.

Common situations: Signed URL in subjectReferenceImageUrl expired before MiniMax fetched it; resolution not enabled for the account tier; prompt disallowed; binary property name mismatch (defaults to 'subjectReference' / 'firstFrame'); quota exhausted.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/d377fbfea8a3def1. Report an issue: GitHub.