calcom/cal.diy · error · Error
Something went wrong! Unable to get recording access link
Error message
Something went wrong! Unable to get recording access link
What it means
`getRecordingDownloadLink` wraps `fetcher(`/recordings/${recordingId}/access-link?valid_for_secs=43200`)` (Zod-parsed via `getAccessLinkResponseSchema`) and re-throws a generic Error on any failure. The original cause is logged via `console.log("err", err)` then discarded.
Source
Thrown at packages/app-store/dailyvideo/lib/VideoApiAdapter.ts:425
try {
const res = await fetcher(`/recordings?room_name=${roomName}`).then(
getRecordingsResponseSchema.parse
);
return Promise.resolve(res);
} catch {
throw new Error("Something went wrong! Unable to get recording");
}
},
createInstantCalVideoRoom: (endTime: string) => createInstantMeeting(endTime, region),
getRecordingDownloadLink: async (recordingId: string): Promise<GetAccessLinkResponseSchema> => {
try {
const res = await fetcher(`/recordings/${recordingId}/access-link?valid_for_secs=43200`).then(
getAccessLinkResponseSchema.parse
);
return Promise.resolve(res);
} 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");
}
},View on GitHub (pinned to 176037d0af)
Solutions
- Preserve the cause: `throw new Error(..., { cause: err })` and remove the `console.log` in favor of structured logging.
- Confirm `recordingId` corresponds to an existing, non-expired Daily recording.
- Verify the Daily API credential is valid and has recordings:access scope.
- Check `getAccessLinkResponseSchema` against the current Daily access-link response shape.
Example fix
// before
} catch (err) {
console.log("err", err);
throw new Error("Something went wrong! Unable to get recording access link");
}
// after
} catch (err) {
logger.warn("Daily access-link fetch failed", { recordingId, err });
throw new Error(`Unable to get recording access link for ${recordingId}`, { cause: err });
} Defensive patterns
Strategy: try-catch
Validate before calling
if (!recordingId || typeof recordingId !== "string") {
throw new Error("recordingId required to fetch access link");
} Type guard
function isAccessLinkResponse(r: unknown): r is GetAccessLinkResponseSchema {
return getAccessLinkResponseSchema.safeParse(r).success;
} Try / catch
try {
return await adapter.getRecordingDownloadLink(recordingId);
} catch (e) {
if (e instanceof Error && /recording access link/.test(e.message)) {
return null;
}
throw e;
} Prevention
- Preserve the cause and use structured logging instead of console.log.
- Verify recordingId exists and hasn't expired before requesting the link.
- Keep `getAccessLinkResponseSchema` aligned with Daily's API.
- Refresh Daily credentials before the access token expires.
When it happens
Trigger: Daily API rejects the access-link request (invalid/expired `recordingId`, auth failure, rate limit), the access link has already expired, or the response shape fails `getAccessLinkResponseSchema`.
Common situations: Recording id typo or from a deleted recording; Daily API credential invalid; recording retention period elapsed so Daily returns 404; schema drift after a Daily API update; transient network failure.
Related errors
- Something went wrong! Unable to get recording
- Failed to create Cal Video meeting. Please ensure DAILY_API_
- Booking of id ${bookingId} does not exist or does not contai
- Booking reference not found
- Failed to get access token
AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12).
Data as JSON: /api/errors/98adcf0298df3e33.
Report an issue: GitHub.