calcom/cal.diy · error · Error
We need need the booking uid to create the Daily reference i
Error message
We need need the booking uid to create the Daily reference in DB
What it means
Inside `createOrUpdateMeeting`, the adapter requires `event.uid` (the booking uid) because Daily room creation must be linked back to a Cal.diy booking for later reference lookup and recording retrieval. A missing `event.uid` is a programming-contract violation, not a user input error.
Source
Thrown at packages/app-store/dailyvideo/lib/VideoApiAdapter.ts:246
where: {
id: bookingReferenceId,
},
data: {
meetingPassword: organizerMeetingToken.token,
},
});
return organizerMeetingToken.token;
};
const DailyVideoApiAdapter = (): VideoApiAdapter => {
async function createOrUpdateMeeting(
endpoint: string,
event: CalendarEvent,
region?: RoomGeo
): Promise<VideoCallData> {
if (!event.uid) {
throw new Error("We need need the booking uid to create the Daily reference in DB");
}
const body = await translateEvent(event, region);
const dailyEvent = await postToDailyAPI(endpoint, body).then(dailyReturnTypeSchema.parse);
const meetingToken = await postToDailyAPI("/meeting-tokens", {
properties: {
room_name: dailyEvent.name,
exp: dailyEvent.config.exp,
is_owner: true,
enable_recording_ui: false,
},
}).then(meetingTokenSchema.parse);
return Promise.resolve({
type: "daily_video",
id: dailyEvent.name,
password: meetingToken.token,
url: dailyEvent.url,
});View on GitHub (pinned to 176037d0af)
Solutions
- Ensure the booking is persisted and its uid is set on the `CalendarEvent` before calling the video adapter.
- Add a type-level guarantee: make `uid` required on the event type passed to `createOrUpdateMeeting`.
- In the caller, fail fast with a clearer error if `event.uid` is missing before reaching the adapter.
- Fix the offending caller identified by the stack trace rather than mutating the adapter.
Example fix
// before
async function createOrUpdateMeeting(endpoint, event, region) {
if (!event.uid) {
throw new Error("We need need the booking uid to create the Daily reference in DB");
}
...
}
// after
async function createOrUpdateMeeting(endpoint, event: CalendarEvent & { uid: string }, region) {
const body = await translateEvent(event, region);
...
} Defensive patterns
Strategy: type-guard
Validate before calling
if (!event.uid) throw new Error("Cannot create Daily room: booking uid missing"); Type guard
function hasBookingUid(e: CalendarEvent): e is CalendarEvent & { uid: string } {
return typeof e.uid === "string" && e.uid.length > 0;
} Try / catch
if (!hasBookingUid(event)) {
throw new Error("CalendarEvent missing required uid for video room creation");
}
await adapter.createMeeting(event); Prevention
- Persist the booking and set `uid` on the event before calling the video adapter.
- Make `uid` required in the event type passed to create/updateMeeting.
- Add unit tests asserting the adapter is only called with a uid.
- Fail fast in the booking pipeline if uid is unassigned.
When it happens
Trigger: `createOrUpdateMeeting` (and thus `createMeeting`/`updateMeeting`) is invoked with a `CalendarEvent` whose `uid` is undefined — e.g. the event was constructed for a booking that hasn't been persisted yet (no uid assigned), or a code path calling the video adapter before the booking uid exists.
Common situations: Booking-creation pipeline calling the video adapter before the booking row (and uid) is committed; a test fixture that omits `uid`; reschedule flow passing a stale event object; refactor that stopped propagating `uid` into the `CalendarEvent`.
Related errors
- Booking of id ${bookingId} does not exist or does not contai
- Booking reference not found
- Failed to create Cal Video meeting. Please ensure DAILY_API_
- Something went wrong! Unable to get recording
- Something went wrong! Unable to get recording access link
AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12).
Data as JSON: /api/errors/320d71412705eeee.
Report an issue: GitHub.