n8n-io/n8n · error · Error
Failed to fetch source config: ${response.statusMessage}
Error message
Failed to fetch source config: ${response.statusMessage} What it means
The controller fetches the RudderStack source config server-side; if the upstream returns a non-2xx status, n8n throws an Error with the upstream statusMessage ('Failed to fetch source config: <statusMessage>'). This is a real HTTP-status-driven throw, not a proxy error.
Source
Thrown at packages/cli/src/controllers/telemetry.controller.ts:143
this.applyCors(req, res);
const response = await this.outboundHttp
.requests({
ssrf: 'disabled', // the source-config host is fixed
})
.request({
method: 'GET',
url: 'https://api-rs.n8n.io/sourceConfig',
headers: {
authorization:
'Basic ' + btoa(`${this.globalConfig.diagnostics.frontendConfig.split(';')[0]}:`),
},
returnFullResponse: true,
ignoreHttpStatusErrors: true,
});
if (response.statusCode < 200 || response.statusCode >= 300) {
throw new Error(`Failed to fetch source config: ${response.statusMessage}`);
}
// write directly to response to avoid wrapping the config in `data` key which is not expected by RudderStack sdk
res.json(response.body);
}
}
View on GitHub (pinned to 5ac6606e81)
Solutions
- Verify N8N_DIAGNOSTICS_ENABLED and that the diagnostics frontendConfig value is valid and not expired.
- Check api-rs.n8n.io reachability from the host and retry on transient upstream failures.
- Disable diagnostics if the instance cannot reach the upstream to avoid repeated failures.
Defensive patterns
Strategy: retry
Validate before calling
// Confirm diagnostics config validity before relying on source-config.
function diagnosticsConfigured(env = process.env) {
return Boolean(env.N8N_DIAGNOSTICS_ENABLED !== 'false' && env.frontendConfig);
} Try / catch
try {
await api.get('/telemetry/source-config'); // or the proxy route
} catch (e) {
if (/Failed to fetch source config/.test(e.message)) {
// check diagnostics creds/upstream; retry with backoff, then disable diagnostics
} else { throw e; }
} Prevention
- Validate diagnostics credentials during deployment.
- Retry transient upstream failures with backoff before surfacing.
When it happens
Trigger: Server-side GET to https://api-rs.n8n.io/sourceConfig returns statusCode < 200 or >= 300 (ignoreHttpStatusErrors is set, so non-2xx is not raised by the client and reaches this check).
Common situations: Upstream API outage or 5xx; invalid/expired diagnostics credentials (frontendConfig) producing 401/403; malformed diagnostics config; intermittent network error surfacing as a non-2xx.
Related errors
- Bad Gateway
- Reflector output did not contain a JSON object
- Failed to fetch provider catalog: ${response.statusText}
- MCP server "${cfg.name}": exactly one of "url" or "command"
- MCP server "${cfg.name}": provide either "url" or "command",
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/890c52e0f6871ec0.
Report an issue: GitHub.