calcom/cal.diy · error · Error

Something went wrong! Unable to get recording

Error message

Something went wrong! Unable to get recording

What it means

`getRecordings` wraps a `fetcher(`/recordings?room_name=${roomName}`)` call (Zod-parsed via `getRecordingsResponseSchema`) in try/catch and re-throws a generic Error on any failure. The original error (network, non-2xx, schema mismatch) is discarded, leaving only this message.

Source

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

    getAvailability: () => {
      return Promise.resolve([]);
    },
    createMeeting: async (event: CalendarEvent): Promise<VideoCallData> =>
      createOrUpdateMeeting("/rooms", event, region),
    deleteMeeting: async (uid: string): Promise<void> => {
      await fetcher(`/rooms/${uid}`, { method: "DELETE" });
      return Promise.resolve();
    },
    updateMeeting: (bookingRef: PartialReference, event: CalendarEvent): Promise<VideoCallData> =>
      createOrUpdateMeeting(`/rooms/${bookingRef.uid}`, event, region),
    getRecordings: async (roomName: string): Promise<GetRecordingsResponseSchema> => {
      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);

View on GitHub (pinned to 176037d0af)

Solutions

  1. Re-throw with `cause` so the original Daily response/schema error is preserved.
  2. Verify the Daily API credential is valid and the room name exists.
  3. Confirm `getRecordingsResponseSchema` matches the current Daily recordings API response shape.
  4. Treat a `404 recordings-not-found` response as an empty list rather than an error.

Example fix

// before
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");
}

// after
try {
  const res = await fetcher(`/recordings?room_name=${roomName}`).then(getRecordingsResponseSchema.parse);
  return res;
} catch (err) {
  throw new Error(`Unable to get recording for room ${roomName}`, { cause: err });
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (!roomName || typeof roomName !== "string") {
  throw new Error("roomName required to fetch recordings");
}

Type guard

function isRecordingsResponse(r: unknown): r is GetRecordingsResponseSchema {
  return getRecordingsResponseSchema.safeParse(r).success;
}

Try / catch

try {
  return await adapter.getRecordings(roomName);
} catch (e) {
  if (e instanceof Error && /Unable to get recording/.test(e.message)) {
    return { data: [] };
  }
  throw e;
}

Prevention

When it happens

Trigger: Daily API returns a non-2xx for the recordings listing (auth failure, unknown room name, rate limit), the response shape doesn't match `getRecordingsResponseSchema`, or the network request throws.

Common situations: Daily API key expired/invalid; `roomName` doesn't match an existing Daily room; Daily API schema changed after an upgrade breaking the Zod parse; transient network error; room with no recordings returns a shape the schema rejects.

Related errors


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