calcom/cal.diy · error · Error

Something went wrong! Unable to submit batch processor job

Error message

Something went wrong! Unable to submit batch processor job

What it means

Thrown by submitBatchProcessorJob. It POSTs a batch-processor body to Daily via postToDailyAPI('/batch-processor', body) and validates the result with ZSubmitBatchProcessorJobRes. Any network failure, non-2xx Daily response, or Zod parse failure is collapsed into this generic message.

Source

Thrown at packages/app-store/dailyvideo/lib/VideoApiAdapter.ts:470

        const allTranscriptsIds = allTranscripts.data.map((transcript) => transcript.transcriptId);
        const allTranscriptsAccessLink = await processTranscriptsInBatches(allTranscriptsIds);
        const accessLinks = await Promise.all(allTranscriptsAccessLink);

        return Promise.resolve(accessLinks);
      } catch (err) {
        console.log("err", err);
        throw new Error("Something went wrong! Unable to get transcription access link");
      }
    },
    submitBatchProcessorJob: async (body: batchProcessorBody): Promise<TSubmitBatchProcessorJobRes> => {
      try {
        const batchProcessorJob = await postToDailyAPI("/batch-processor", body).then(
          ZSubmitBatchProcessorJobRes.parse
        );
        return batchProcessorJob;
      } catch (err) {
        console.log("err", err);
        throw new Error("Something went wrong! Unable to submit batch processor job");
      }
    },
    getTranscriptsAccessLinkFromRecordingId: async (
      recordingId: string
    ): Promise<TGetTranscriptAccessLink["transcription"] | { message: string }> => {
      try {
        const batchProcessorJobs = await fetcher(`/batch-processor?recordingId=${recordingId}`).then(
          getBatchProcessJobs.parse
        );
        if (!batchProcessorJobs.data.length) {
          return { message: `No Batch processor jobs found for recording id ${recordingId}` };
        }

        const transcriptJobId = batchProcessorJobs.data.filter(
          (job) => job.preset === "transcript" && job.status === "finished"
        )?.[0]?.id;

        if (!transcriptJobId) return [];

View on GitHub (pinned to 176037d0af)

Solutions

  1. Read the swallowed original error from the console.log to distinguish network vs. parse vs. Daily-API failure.
  2. Validate body against batchProcessorBody before calling (e.g. ensure preset and recordingId are present).
  3. Confirm the Daily integration has batch-processor entitlement and a valid API key.
  4. Compare the live Daily /batch-processor response with ZSubmitBatchProcessorJobRes and update if drifted.
  5. Re-throw with the original cause preserved.

Example fix

// before
} catch (err) {
  console.log("err", err);
  throw new Error("Something went wrong! Unable to submit batch processor job");
}

// after
} catch (err) {
  throw new Error(`Unable to submit Daily batch processor job: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
}
Defensive patterns

Strategy: validation

Validate before calling

import { z } from "zod";
const batchBodySchema = z.object({
  recordingId: z.string().min(1),
  preset: z.enum(["transcript", "mp4", "text"]),
});
const parsed = batchBodySchema.parse(body);

Type guard

const isBatchProcessorBody = (b: unknown): b is { recordingId: string; preset: string } =>
  typeof b === "object" && b !== null && typeof (b as any).recordingId === "string" && typeof (b as any).preset === "string";

Try / catch

try {
  const job = await adapter.submitBatchProcessorJob(body);
} catch (err) {
  if (err instanceof Error && /submit batch processor/i.test(err.message)) {
    logger.error("batch submit failed", { body, cause: err });
  }
  throw err;
}

Prevention

When it happens

Trigger: submitBatchProcessorJob(body) called with a body that Daily rejects (e.g. missing recordingId, unsupported preset), when Daily returns 4xx/5xx, when postToDailyAPI throws due to missing credentials, or when the response does not match ZSubmitBatchProcessorJobRes.

Common situations: Daily batch-processor feature not enabled for the workspace; body.recordingId points to a deleted recording; Daily API key invalid; response schema drift after a Daily API version bump.

Related errors


AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12). Data as JSON: /api/errors/706c8cb778fcbc9b. Report an issue: GitHub.