FlowiseAI/Flowise · error · Error
Failed to make GET request: ${error instanceof Error ? error
Error message
Failed to make GET request: ${error instanceof Error ? error.message : 'Unknown error'} What it means
This is the outer catch-all of RequestsGet_Core._call. It wraps every failure from secureFetch (network error, SSRF deny-list block, redirect overflow, the inner HTTP Error from 481) into a single 'Failed to make GET request: <cause>' message. As shipped, this is the error callers actually observe; the inner HTTP Error (481) never propagates unwrapped.
Source
Thrown at packages/components/nodes/tools/RequestsGet/core.ts:181
Object.entries(params.queryParams).forEach(([key, value]) => {
url.searchParams.append(key, String(value))
})
finalUrl = url.toString()
}
try {
const res = await secureFetch(finalUrl, {
headers: requestHeaders
})
if (!res.ok) {
throw new Error(`HTTP Error ${res.status}: ${res.statusText}`)
}
const text = await res.text()
return text.slice(0, this.maxOutputLength)
} catch (error) {
throw new Error(`Failed to make GET request: ${error instanceof Error ? error.message : 'Unknown error'}`)
}
}
}
View on GitHub (pinned to abe4a8601a)
Solutions
- Parse the suffix of the message after 'Failed to make GET request: ' to recover the root cause.
- If the cause is an SSRF/deny-list block, use a public URL or have an admin adjust the allow-list.
- If the cause is 'HTTP Error <code>', apply the fix for error 481.
- For network/TLS errors, verify connectivity and certificates from the Flowise host.
Example fix
// before
try {
await tool._call({})
} catch (e) {
console.error((e as Error).message) // opaque "Failed to make GET request: ..."
}
// after (parse root cause from wrapped message)
try {
await tool._call({})
} catch (e) {
const msg = (e as Error).message
const cause = msg.replace(/^Failed to make GET request:\s*/, '')
if (/HTTP Error (429|5\d\d)/.test(cause)) await retry()
else if (/redirect|denied|SSRF/i.test(cause)) throw new Error('Configuration required: ' + cause)
else throw e
} Defensive patterns
Strategy: try-catch
Validate before calling
function classifyGetFailure(e: unknown): 'network' | 'ssrf' | 'http' | 'unknown' {
const msg = e instanceof Error ? e.message : String(e)
if (/HTTP Error \d{3}/.test(msg)) return 'http'
if (/redirect|denied|ssrf|resolve|blocked/i.test(msg)) return 'ssrf'
if (/ECONN|ENOTFOUND|ETIMEDOUT|certificate|fetch failed/i.test(msg)) return 'network'
return 'unknown'
} Type guard
const isWrappedGetFailure = (e: unknown): e is Error => e instanceof Error && /^Failed to make GET request:/.test(e.message)
Try / catch
try {
return await tool._call({})
} catch (e) {
const cause = (e as Error).message.replace(/^Failed to make GET request:\s*/, '')
switch (classifyGetFailure(e)) {
case 'http': /* parse status, retry on 429/5xx */ break
case 'ssrf': throw new Error('Target blocked by SSRF policy: ' + cause)
case 'network':/* retry with backoff */ break
default: throw e
}
} Prevention
- Always parse the suffix after 'Failed to make GET request: ' to find the root cause.
- Whitelist public hosts in Flowise's SSRF config when targeting internal services is genuinely required (admin decision).
- Distinguish retryable (network/5xx) from permanent (4xx, SSRF) causes before retrying.
When it happens
Trigger: Any failure during secureFetch: DNS/TCP failure, TLS error, SSRF-blocked host (private/reserved IP in redirect chain), 'Too many redirects', non-ok HTTP status, or response read error.
Common situations: Target host is unreachable or behind a firewall; URL points to a private/internal IP that Flowise's deny list blocks (SSRF protection); self-signed or expired TLS cert; redirect loop; the inner status-code error (481) being re-wrapped here.
Related errors
- Failed to make POST request: ${error instanceof Error ? erro
- Failed to make PUT request: ${error instanceof Error ? error
- ${errorMessage}
- Failed to post ${url}: ${error}
- Access to this host is denied by policy.
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/ae95f68fe657ada9.
Report an issue: GitHub.