calcom/cal.diy · error · Error

Something went wrong! Unable to checkIfRoomNameMatchesInReco

Error message

Something went wrong! Unable to checkIfRoomNameMatchesInRecording. ${err}

What it means

Thrown by checkIfRoomNameMatchesInRecording. It fetches a single recording via GET /recordings/<recordingId>, parses with recordingItemSchema, and compares room_name. Unlike its siblings, this catch DOES interpolate the original error (${err}), so the real cause is visible in the message string.

Source

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

        )?.[0]?.id;

        if (!transcriptJobId) return [];

        const accessLinkRes = await getBatchProcessorJobAccessLink(transcriptJobId);

        return accessLinkRes.transcription;
      } catch (err) {
        console.log("err", err);
        throw new Error("Something went wrong! can't get transcripts");
      }
    },
    checkIfRoomNameMatchesInRecording: async (roomName: string, recordingId: string): Promise<boolean> => {
      try {
        const recording = await fetcher(`/recordings/${recordingId}`).then(recordingItemSchema.parse);
        return recording.room_name === roomName;
      } catch (err) {
        console.error("err", err);
        throw new Error(`Something went wrong! Unable to checkIfRoomNameMatchesInRecording. ${err}`);
      }
    },
    getMeetingInformation: async (roomName: string): Promise<TGetMeetingInformationResponsesSchema> => {
      try {
        const res = await fetcher(`/meetings?room=${encodeURIComponent(roomName)}`).then(
          getMeetingInformationResponseSchema.parse
        );
        return res;
      } catch (err) {
        console.error("err", err);
        throw new Error("Something went wrong! Unable to get meeting information");
      }
    },
  };
};

export default DailyVideoApiAdapter;

View on GitHub (pinned to 176037d0af)

Solutions

  1. Read the interpolated ${err} portion of the message for the precise cause.
  2. Confirm the recordingId is current (re-fetch recordings for the room).
  3. Verify Daily credentials.
  4. Update recordingItemSchema if the Daily recording shape changed.
  5. Treat a 404 as 'no match' (return false) instead of throwing, if business logic allows.

Example fix

// before
const recording = await fetcher(`/recordings/${recordingId}`).then(recordingItemSchema.parse);
return recording.room_name === roomName;

// after - treat missing recording as no-match
const resp = await fetcher(`/recordings/${recordingId}`);
if (!resp.ok) {
  if (resp.status === 404) return false;
  throw new Error(`Daily recordings lookup failed (${resp.status}) for ${recordingId}`);
}
const recording = recordingItemSchema.parse(await resp.json());
return recording.room_name === roomName;
Defensive patterns

Strategy: try-catch

Validate before calling

if (!recordingId || !roomName) throw new TypeError("recordingId and roomName required");

Type guard

const isRecordingItem = (v: unknown): v is { room_name: string } =>
  typeof v === "object" && v !== null && typeof (v as any).room_name === "string";

Try / catch

try {
  const matches = await adapter.checkIfRoomNameMatchesInRecording(roomName, recordingId);
} catch (err) {
  // err.message interpolates the original cause - read it
  if (/404/.test(err.message)) return false; // recording gone -> no match
  throw err;
}

Prevention

When it happens

Trigger: GET /recordings/<recordingId> returns 404 (recording deleted), Daily returns non-2xx, recordingItemSchema.parse fails on a shape change, or the recordingId is malformed.

Common situations: Recording expired or deleted on Daily side; recordingId passed from a stale booking reference; Daily API key revoked; recording payload schema drift.

Related errors


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