calcom/cal.diy · warning · NotFoundException

Meeting not found

Error message

Meeting not found

What it means

GoogleCalendarService.getEventDetails throws NotFoundException('Meeting not found') when the Google Calendar API returns a successful response with no event.data. This branch is reached when the calendar.events.get call resolves but yields an empty body — the event id does not exist in the target calendar.

Source

Thrown at apps/api/v2/src/modules/cal-unified-calendars/services/google-calendar.service.ts:58

    const ownerUserEmail = bookingReference?.booking?.user?.email;

    // Get authenticated calendar instance
    const calendar = await this.getAuthorizedCalendarInstance(
      ownerUserEmail,
      bookingReference.credential?.key,
      bookingReference.delegationCredential
    );

    try {
      const event = await calendar.events.get({
        calendarId: bookingReference?.externalCalendarId ?? "primary",
        eventId: bookingReference?.uid,
        // fields: "id,status,created,updated,summary,description,location,creator,organizer,start,end,attendees,conferenceData"
      });

      if (!event.data) {
        throw new NotFoundException("Meeting not found");
      }
      return event.data as GoogleCalendarEventResponse;
    } catch (error) {
      throw new NotFoundException("Failed to retrieve meeting details");
    }
  }

  async updateEventDetails(
    eventUid: string,
    updateData: UpdateUnifiedCalendarEventInput
  ): Promise<GoogleCalendarEventResponse> {
    const bookingReference =
      await this.bookingReferencesRepository.getBookingReferencesIncludeSensitiveCredentials(eventUid);

    if (!bookingReference) {
      throw new NotFoundException("Booking reference not found");
    }

View on GitHub (pinned to 176037d0af)

Solutions

  1. Verify the event still exists in the Google Calendar UI for the credential's account.
  2. If the event was deleted, clear or recreate the booking reference accordingly.
  3. Check externalCalendarId on the reference — if stale, update it to the correct calendar id.
Defensive patterns

Strategy: try-catch

Validate before calling

// Before fetching details, ensure the external event still exists
const exists = await calendar.events.get({ calendarId, eventId }).then(r => !!r.data).catch(() => false);
if (!exists) throw new Error('Meeting no longer exists in Google Calendar');

Try / catch

try {
  return await api.v2.calUnified.getEvent(eventUid);
} catch (err) {
  if (err?.statusCode === 404 && /Meeting not found/i.test(err?.message)) {
    // mark the booking reference as externally-deleted and move on
  }
  throw err;
}

Prevention

When it happens

Trigger: The booking reference exists, but the external Google Calendar event it points to (bookingReference.uid in externalCalendarId) has been deleted or moved outside the queried calendar.

Common situations: The event was deleted directly in Google Calendar after booking; the event was moved to another calendar; the externalCalendarId on the reference is stale (calendar deleted/recreated).

Related errors


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