RocketChat/Rocket.Chat · error · Error

no-videoconf-provider-app

Error message

no-videoconf-provider-app

What it means

Thrown by VideoConferenceService.getValidatedProvider() before any call is started: videoConfProviders.hasAnyProvider() is false, meaning no app has registered a video conferencing provider on this workspace. Rocket.Chat does not implement video calls itself; URL generation and callbacks are delegated to an Apps-Engine app that registers a videoConfProvider (Jitsi, Pexip, Google Meet, etc.). With zero providers registered, call creation is refused up front with the availabilityErrors.NO_APP code ('no-videoconf-provider-app').

Source

Thrown at apps/meteor/server/services/video-conference/service.ts:589

		if (!message) {
			throw new Error('failed-to-create-message');
		}

		return message._id;
	}

	private async validateProvider(providerName: string): Promise<void> {
		const manager = await this.getProviderManager();
		const configured = await manager.isFullyConfigured(providerName).catch(() => false);
		if (!configured) {
			throw new Error(availabilityErrors.NOT_CONFIGURED);
		}
	}

	private async getValidatedProvider(): Promise<string> {
		if (!videoConfProviders.hasAnyProvider()) {
			throw new Error(availabilityErrors.NO_APP);
		}

		const providerName = videoConfProviders.getActiveProvider();
		if (!providerName) {
			throw new Error(availabilityErrors.NOT_ACTIVE);
		}

		await this.validateProvider(providerName);

		return providerName;
	}

	private async createEphemeralMessage(uid: string, rid: string, i18nKey: string): Promise<void> {
		const user = await Users.findOneById<Pick<IUser, 'language' | 'roles'>>(uid, { projection: { language: 1, roles: 1 } });
		const language = user?.language || settings.get<string>('Language') || 'en';
		const key = user?.roles.includes('admin') ? `admin-${i18nKey}` : i18nKey;
		const msg = i18n.t(key, {
			lng: language,

View on GitHub (pinned to e4b8178b20)

Solutions

  1. Install and enable a video conferencing provider app (Administration > Apps > Marketplace, e.g. Video Conferencing with Jitsi)
  2. Verify the provider appears and is enabled under Administration > Video Conferencing
  3. Check the app's logs (Administration > Apps > <app> > Logs) for provider registration failures and re-enable/reinstall if broken
  4. Retry the call start only after the app reports loaded and its provider registered

Example fix

// before
await videoConfService.startCall(uid, rid); // throws Error('no-videoconf-provider-app')

// after
if (!videoConfProviders.hasAnyProvider()) {
	throw new Meteor.Error('no-videoconf-provider-app', 'Install a video conferencing provider app first');
}
await videoConfService.startCall(uid, rid);
Defensive patterns

Strategy: validation

Validate before calling

import { videoConfProviders } from '.../lib/videoConference/server';

if (!videoConfProviders.hasAnyProvider()) {
	throw new Meteor.Error('no-videoconf-provider-app', 'Install a video conferencing provider app first');
}
await videoConfService.startCall(uid, rid);

Try / catch

catch (err) { if (err instanceof Error && err.message === 'no-videoconf-provider-app') { /* prompt admin to install a provider app */ } else throw err; }

Prevention

When it happens

Trigger: Calling the start-call flow (REST video-conference start / VideoConferenceService.startCall via startDirect/startGroup) on a workspace where no video conferencing app is installed, the provider app is disabled, or the app loaded but its provider registration never ran.

Common situations: Fresh installation without a conferencing app from the Marketplace; admin disabled the Jitsi/conferencing app; local dev server with an empty Apps-Engine; app upgrade that stopped registering its provider.

Related errors


AI-assisted analysis of RocketChat/Rocket.Chat@e4b8178b20 (2026-08-18). Data as JSON: /api/errors/e807e6e5b77a53d4. Report an issue: GitHub.