calcom/cal.diy · error · BadRequestException
Failed to create video meeting with ${ctx.integrationSlug}.
Error message
Failed to create video meeting with ${ctx.integrationSlug}. Please ensure the integration is properly configured. What it means
Thrown by handleVideoApiIntegration when createMeeting returns no createdEvent for a connected third-party video integration (Zoom, Webex, etc.). Unlike error 262, a credential WAS found, but the provider's API rejected the meeting creation. The service logs meetingResult.success/type before throwing to aid diagnosis.
Source
Thrown at apps/api/v2/src/platform/bookings/2024-08-13/services/booking-location-integration.service.ts:214
`Video integration "${ctx.integrationSlug}" is not connected. Please connect the integration in your settings first.`
);
}
await this.bookingVideoService.deleteOldVideoMeetingIfNeeded(ctx.existingBooking.id);
const evt = await this.calendarSyncService.buildCalEventFromBookingData(
ctx.booking,
ctx.internalLocation,
credential.id
);
const meetingResult = await createMeeting(credential, evt);
if (!meetingResult.createdEvent) {
this.logger.error(
`Failed to create video meeting with ${ctx.integrationSlug}`,
JSON.stringify({ success: meetingResult.success, type: meetingResult.type })
);
throw new BadRequestException(
`Failed to create video meeting with ${ctx.integrationSlug}. Please ensure the integration is properly configured.`
);
}
const createdEvent = meetingResult.createdEvent;
const videoCallUrl = createdEvent.url;
const bookingLocation = videoCallUrl || ctx.internalLocation;
const newReference = {
type: credential.type,
uid: createdEvent.id?.toString() || "",
meetingId: createdEvent.id?.toString(),
meetingPassword: createdEvent.password,
meetingUrl: createdEvent.url,
// only include credentialId if it's a valid ID (not 0)
...(credential.id > 0 ? { credentialId: credential.id } : {}),
};
View on GitHub (pinned to 176037d0af)
Solutions
- Have the host reconnect the integration in Settings to refresh the OAuth tokens, then retry.
- Inspect server logs for the logged JSON ({ success, type }) to identify the provider-specific failure.
- Check the provider's developer dashboard/app status for errors, rate limits, or outages.
- Retry once the provider-side issue clears; if persistent, switch the location to cal-video or another connected integration.
Defensive patterns
Strategy: retry
Validate before calling
// Pre-flight: refresh/validate the integration token if you manage OAuth yourself. // Otherwise rely on retry with backoff for transient provider failures.
Try / catch
async function patchWithRetry(uid, slug, payload, attempts = 3) {
for (let i = 0; i < attempts; i++) {
try {
return await api.patch(`/v2/bookings/${uid}/location`, payload);
} catch (err) {
const transient = err.status === 400 && /properly configured/.test(err.message) && i < attempts - 1;
if (!transient) throw err;
await delay(2 ** i * 1000);
}
}
} Prevention
- Keep integration OAuth tokens fresh; reconnect before expiry.
- Inspect server logs for meetingResult.success/type to distinguish transient vs permanent provider failures.
- Have a fallback integration (e.g. cal-video) ready when a provider API degrades.
When it happens
Trigger: PATCH booking location to a connected video integration whose provider API call fails: expired/revoked OAuth token still present as a credential, provider rate limit, provider outage, or app misconfiguration (missing scopes/keys).
Common situations: OAuth access token expired and refresh failed silently; Zoom/Webex app credentials rotated; provider API quota hit; transient provider 5xx; the app installed but not fully configured (missing required scopes).
Related errors
- Video integration "${ctx.integrationSlug}" is not connected.
- Failed to create Cal Video meeting. Please ensure DAILY_API_
- No ${requiredCalendarType.replace("_", " ")} event found for
- ${googleCalendar.error?.message}
- PermissionsGuard - no authentication provided. Provide eithe
AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12).
Data as JSON: /api/errors/5f1581044537c6a5.
Report an issue: GitHub.