FlowiseAI/Flowise · error · Error
Pipedream Project ID is required in credentials
Error message
Pipedream Project ID is required in credentials
What it means
Thrown when the Pipedream credential has no projectId. The projectId is sent as the x-pd-project-id header to the Pipedream MCP server and is required to scope tool access, so getTools rejects early if it is missing.
Source
Thrown at packages/components/nodes/tools/MCP/Pipedream/PipedreamMCP.ts:300
externalUserId = 'flowise_preview_user'
}
externalUserId = externalUserId.replace(/<[^>]*>/g, '').trim()
if (!externalUserId) {
throw new Error('Pipedream user ID is required')
}
const SAFE_USER_ID = /^[a-zA-Z0-9._@+-]{1,250}$/
if (!SAFE_USER_ID.test(externalUserId.trim())) {
throw new Error('User ID contains invalid characters. Allowed: letters, digits, . _ @ + -')
}
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
const projectId = getCredentialParam('projectId', credentialData, nodeData)
const oauthScopes = getCredentialParam('oauthScopes', credentialData, nodeData) as string | 'connect:*'
if (!projectId) {
throw new Error('Pipedream Project ID is required in credentials')
}
const clientId = getCredentialParam('clientId', credentialData, nodeData)
const clientSecret = getCredentialParam('clientSecret', credentialData, nodeData)
if (!clientId || !clientSecret) {
throw new Error('Pipedream Client ID and Client Secret are required in credentials')
}
const accessToken = await this.fetchAccessToken(clientId, clientSecret, oauthScopes)
const environment = (nodeData.inputs?.environment as string) || 'development'
const toolMode = (nodeData.inputs?.toolMode as string) || 'tools-only'
const serverParams = {
url: 'https://remote.mcp.pipedream.net',
headers: {
Authorization: `Bearer ${accessToken}`,
'x-pd-project-id': projectId,View on GitHub (pinned to abe4a8601a)
Solutions
- Open the bound Pipedream credential and enter the Project ID from the Pipedream dashboard (Workspace > Projects).
- Confirm the projectId corresponds to the workspace/environment you intend to use.
- Save the credential and re-run the node.
Defensive patterns
Strategy: validation
Validate before calling
const projectId = getCredentialParam('projectId', credentialData, nodeData)
if (!projectId) {
throw new Error('Pipedream Project ID is required')
} Type guard
function hasProjectId(cred: unknown): cred is { projectId: string } {
return typeof cred === 'object' && cred !== null
&& typeof (cred as any).projectId === 'string'
&& (cred as any).projectId.trim().length > 0
} Try / catch
try { await pipedream.getTools(nodeData, options) }
catch (e) { if (e instanceof Error && e.message === 'Pipedream Project ID is required in credentials') { /* bind projectId */ } } Prevention
- Make projectId a required field in the credential component.
- Provide a credential 'Test' that validates all required fields at save time.
When it happens
Trigger: The selected Pipedream credential exists but its 'projectId' field is empty; the credential component was filled partially; projectId was cleared during an edit.
Common situations: User created the credential but skipped projectId; copied an old credential schema without projectId; the field is mislabeled or the value was not saved.
Related errors
- Pipedream Client ID and Client Secret are required in creden
- Cloudflare API Token is missing in credential.
- CometAPI API Key is missing or empty. Please provide a valid
- Pipedream app slug is required
- Pipedream user ID is required
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/9f2d387740fde759.
Report an issue: GitHub.