jitsi/jitsi-meet · warning

Audio translation request failed: ${error} for [${endpointId

Error message

Audio translation request failed: ${error} for [${endpointIds.join(', ')}]

What it means

This is a logger.warn emitted in the audio-translation middleware when the JitsiConference fires AUDIO_TRANSLATION_FAILED for a batch of endpoint IDs — the server rejected or failed the request to translate audio for those endpoints. It is not a thrown exception; it accompanies a user-facing error notification and a redux reset of the optimistic translation selection.

Source

Thrown at react/features/audio-translation/middleware.any.ts:100

    }

    return result;
});

/**
 * Surfaces audio-translation request failures reported by the bridge-side component: shows a notification and
 * resets translation state (redux + lib-jitsi-meet) so the UI reflects the failure and re-enabling works.
 */
StateListenerRegistry.register(
    state => state['features/base/conference'].conference,
    (conference, { dispatch }, previousConference) => {
        if (!conference || previousConference) {
            return;
        }

        conference.on(JitsiConferenceEvents.AUDIO_TRANSLATION_FAILED,
            ({ endpointIds, error }: { endpointIds: string[]; error: string; }) => {
                logger.warn(`Audio translation request failed: ${error} for [${endpointIds.join(', ')}]`);

                dispatch(showErrorNotification({
                    titleKey: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY
                }, NOTIFICATION_TIMEOUT_TYPE.MEDIUM));

                // The optimistic selection didn't take. Reset everything: clears redux (UI reflects off)
                // and, via conference.clearTranslation(), resets lib-jitsi-meet's language state so
                // re-enabling isn't deduped to a no-op.
                dispatch(clearAudioTranslation());
            });
    });

/**
 * Ingests the two per-participant translation signals from the conference: which translated sources the bridge
 * is forwarding to us (receiving), and which remote participants are translating us (enabled). Both are cleared
 * when the conference goes away.
 */
StateListenerRegistry.register(

View on GitHub (pinned to 98de6219cc)

Solutions

  1. Verify the server-side audio translation component is deployed/enabled and supports the requested languages
  2. Check that endpointIds still exist in the conference (request fresh translation after participant churn)
  3. Inspect the raw error string in the log to distinguish unsupported-language vs capacity vs connectivity failures
  4. Upgrade/align lib-jitsi-meet and backend versions so AUDIO_TRANSLATION_FAILED payloads match the ERROR_NOTIFICATION_KEYS mapping

Example fix

// before
logger.warn(`Audio translation request failed: ${error} for [${endpointIds.join(', ')}]`);

// after (classify and make the failure actionable)
logger.warn(`Audio translation request failed: ${error} for [${endpointIds.join(', ')}]`, {
    endpoints: endpointIds,
    reason: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY
});
dispatch(showErrorNotification({
    titleKey: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY
}, NOTIFICATION_TIMEOUT_TYPE.MEDIUM));
Defensive patterns

Strategy: fallback

Validate before calling

const conference = getCurrentConference(state);
const supported = conference?.isAudioTranslationSupported?.(); // capability probe
if (!supported) {
    // hide/disable translation UI instead of dispatching a doomed request
}

Type guard

const isTranslatableEndpoint = (id: string, conference: any): boolean =>
    conference.getParticipants().some(p => p.getId() === id);

Try / catch

// No thrown exception: handle the event payload
current.on(JitsiConferenceEvents.AUDIO_TRANSLATION_FAILED, ({ endpointIds, error }) => {
    logger.warn(`Audio translation request failed: ${error}`, { endpointIds });
    dispatch(showErrorNotification({ titleKey: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY }));
    resetTranslationSelection(); // middleware already resets optimistic state
});

Prevention

When it happens

Trigger: Subscribing to AUDIO_TRANSLATION_FAILED on the conference and the backend (translator bridge/Jigasi-style service) returning an error for the requested endpointIds: unsupported target language, translator capacity/availability failure, invalid endpoint IDs, or conference-level translation not enabled on the server.

Common situations: Deployments without the audio translation service configured; requesting a language the backend doesn't support; endpoints leaving the conference while a translation is requested; version mismatch between lib-jitsi-meet events and the backend bridge; scale/capacity errors on the translation service.


AI-assisted analysis of jitsi/jitsi-meet@98de6219cc (2026-08-28). Data as JSON: /api/errors/5d18077d248523fd. Report an issue: GitHub.