RocketChat/Rocket.Chat · error

Failed to retrieve registration confirmation poll data: ${re

Error message

Failed to retrieve registration confirmation poll data: ${response.statusText}

What it means

During device-code style registration, getConfirmationPoll polls cloud /api/v2/register/workspace/poll with the device token. Any non-ok response or unreadable body is rethrown as 'Failed to retrieve registration confirmation poll data: <statusText>'. The original detail (including the cloud's JSON error) is only visible in SystemLogger under 'Failed to get confirmation poll from Rocket.Chat Cloud'.

Source

Thrown at apps/meteor/server/lib/cloud/getConfirmationPoll.ts:26

export async function getConfirmationPoll(deviceCode: string): Promise<CloudConfirmationPollData> {
	assertNotOfflineLicense();

	try {
		const cloudUrl = settings.get<string>('Cloud_Url');
		const response = await fetch(`${cloudUrl}/api/v2/register/workspace/poll`, {
			params: { token: deviceCode },
			// SECURITY: the URL is a default hardcoded value or an envvar/setting set by an admin. It's safe to disable this check.
			ignoreSsrfValidation: true,
		});

		try {
			if (!response.ok) {
				throw new Error((await response.json()).error);
			}

			return await response.json();
		} catch (err) {
			throw new Error(`Failed to retrieve registration confirmation poll data: ${response.statusText}`);
		}
	} catch (err: any) {
		SystemLogger.error({
			msg: 'Failed to get confirmation poll from Rocket.Chat Cloud',
			url: '/api/v2/register/workspace/poll',
			err,
		});

		throw err;
	}
}

View on GitHub (pinned to b2c16d5842)

Solutions

  1. Check SystemLogger for the underlying error detail before trusting the generic statusText message.
  2. Restart the registration to obtain a fresh device code and approve it promptly in the cloud console.
  3. Verify network egress and proxy access to Cloud_Url from the server.
  4. If the cloud is temporarily down, wait and retry the poll later.
Defensive patterns

Strategy: retry

Try / catch

try {
  const poll = await getConfirmationPoll(deviceCode);
} catch (e) {
  if (e instanceof Error && e.message.startsWith('Failed to retrieve registration confirmation poll data')) {
    // inspect SystemLogger for the real cause; restart registration if the device code expired
  }
  throw e;
}

Prevention

When it happens

Trigger: Polling while the cloud rejects the device code (expired or unknown), during cloud outages, or when a proxy answers instead of the cloud so the body cannot be parsed.

Common situations: Registration left pending past the device-code expiry; cloud maintenance windows; blocked egress to cloud.rocket.chat; slow approvals exceeding the code lifetime.

Related errors


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