calcom/cal.diy · error · Error
Something went wrong! Unable to get transcription access lin
Error message
Something went wrong! Unable to get transcription access link
What it means
Thrown by getAllTranscriptsAccessLinkFromRoomName in the Daily video adapter. The method lists transcripts for a Daily room via GET /transcript?room_name=..., extracts their IDs, then resolves access links through processTranscriptsInBatches. Any failure inside the try block (network error from fetcher, a Zod parse failure in getTranscripts.parse, or a rejected batch promise) is swallowed by a generic catch that re-throws this message, discarding the original cause.
Source
Thrown at packages/app-store/dailyvideo/lib/VideoApiAdapter.ts:441
} catch (err) {
console.log("err", err);
throw new Error("Something went wrong! Unable to get recording access link");
}
},
getAllTranscriptsAccessLinkFromRoomName: async (roomName: string): Promise<Array<string>> => {
try {
const allTranscripts = await fetcher(`/transcript?room_name=${roomName}`).then(getTranscripts.parse);
if (!allTranscripts.data.length) return [];
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");
}
},
getAllTranscriptsAccessLinkFromMeetingId: async (meetingId: string): Promise<Array<string>> => {
try {
const allTranscripts = await fetcher(`/transcript?mtgSessionId=${meetingId}`).then(
getTranscripts.parse
);
if (!allTranscripts.data.length) return [];
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");View on GitHub (pinned to 176037d0af)
Solutions
- Check the console.log('err', err) output server-side for the real underlying error (ZodError, fetch TypeError, or Daily status code).
- Verify the Daily app's API key is set and valid under /apps/dailyvideo configuration.
- Confirm the roomName passed corresponds to an existing Daily room that had recordings enabled.
- If the underlying error is a Zod parse failure, compare the live Daily /transcript response against getTranscripts and update the schema.
- Re-throw the original error instead of a generic message so callers can branch on cause.
Example fix
// before
} catch (err) {
console.log("err", err);
throw new Error("Something went wrong! Unable to get transcription access link");
}
// after - preserve cause for diagnostics
} catch (err) {
this.log.error("getAllTranscriptsAccessLinkFromRoomName failed for", roomName, err);
throw new Error(`Unable to get transcription access link for room ${roomName}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
} Defensive patterns
Strategy: try-catch
Validate before calling
if (!roomName || typeof roomName !== "string") throw new TypeError("roomName must be a non-empty string");
const creds = await getParsedAppKeysFromSlug("dailyvideo", dailyAppKeysSchema);
if (!creds.api_key) throw new Error("Daily API key not configured"); Type guard
const isTranscriptList = (v: unknown): v is { data: { transcriptId: string }[] } =>
typeof v === "object" && v !== null && Array.isArray((v as any).data) &&
(v as any).data.every((t: any) => typeof t?.transcriptId === "string"); Try / catch
try {
const links = await adapter.getAllTranscriptsAccessLinkFromRoomName(roomName);
} catch (err) {
logger.error("transcript fetch failed", { roomName, cause: err instanceof Error ? err.message : err });
return []; // transcripts are non-critical, degrade gracefully
} Prevention
- Monitor Daily API key validity and rotate before expiry.
- Pin the Daily response schema with a contract test against a recorded fixture.
- Treat transcript access as best-effort: wrap calls so a failure does not break booking flows.
When it happens
Trigger: Calling getAllTranscriptsAccessLinkFromRoomName(roomName) where roomName has no recordings, the Daily API key is missing/invalid, the response shape does not match getTranscripts schema, or one of processTranscriptsInBatches inner promises rejects.
Common situations: Daily app credentials misconfigured in the Cal.com admin; roomName is stale (room deleted); Daily API rate limit hit; Daily changed their transcript payload shape causing getTranscripts.parse to throw ZodError; transcriptId missing on a transcript object.
Related errors
- Something went wrong! Unable to submit batch processor job
- Something went wrong! Unable to get meeting information
- Something went wrong! can't get transcripts
- Something went wrong! Unable to checkIfRoomNameMatchesInReco
- Could not add this apple calendar account: ${reason}
AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12).
Data as JSON: /api/errors/eab3b89c4af0d955.
Report an issue: GitHub.