Significant-Gravitas/AutoGPT · error · InvalidInputError
Graph #{graph_id} does not have a webhook trigger node
Error message
Graph #{graph_id} does not have a webhook trigger node What it means
InvalidInputError raised inside setup_triggered_preset when the graph exists but graph.webhook_input_node is None — the graph contains no webhook-capable input block, so no trigger can be registered. It signals a caller-side modeling problem: only graphs whose input includes a webhook block (e.g. webhook trigger blocks from the integrations framework) support triggered presets.
Source
Thrown at autogpt_platform/backend/backend/api/features/library/triggers.py:60
Sets up the webhook for the graph's trigger node — auto-registering it with
the provider for auto-setup webhooks, or just minting the ingress URL for
manual-setup webhooks — then creates a preset linked to that webhook. The
returned preset has ``.webhook`` populated, so ``preset.webhook.url`` is the
ingress URL to hand to the user for manual-setup webhooks.
Fetches the graph itself (rather than taking a ``GraphModel``) so it can run
as an RPC endpoint without serializing the whole graph across the boundary.
Raises:
NotFoundError: if the graph no longer exists / isn't accessible.
InvalidInputError: if the graph has no webhook node, or the webhook
backend rejects the trigger config / credentials.
"""
graph = await get_graph(graph_id, version=graph_version, user_id=user_id)
if not graph:
raise NotFoundError(f"Graph #{graph_id} is not accessible (anymore)")
if not (trigger_node := graph.webhook_input_node):
raise InvalidInputError(
f"Graph #{graph_id} does not have a webhook trigger node"
)
trigger_config_with_credentials = {
**trigger_config,
**(
make_node_credentials_input_map(graph, agent_credentials).get(
trigger_node.id
)
or {}
),
}
# Resource-follows-parent: the webhook lives in the graph's org/team,
# not the caller's active org.
new_webhook, feedback = await setup_webhook_for_block(
user_id=user_id,
trigger_block=trigger_node.block,View on GitHub (pinned to 9c8bb5550f)
Solutions
- Add a webhook trigger block (from the integrations category) as the graph's input node and re-save the graph.
- Verify programmatically: fetch the graph and check graph.webhook_input_node is not None before calling setup.
- Ensure you reference the graph version that actually contains the webhook node.
- Handle InvalidInputError in callers with a message telling the user to add a webhook trigger to the agent.
Example fix
# before
await setup_triggered_preset(user_id=uid, graph_id=gid, graph_version=v, ...)
# after
graph = await get_graph(gid, version=v, user_id=uid)
if graph and not graph.webhook_input_node:
raise ValueError("Add a webhook trigger block to this agent before setup")
await setup_triggered_preset(user_id=uid, graph_id=gid, graph_version=v, ...) Defensive patterns
Strategy: type-guard
Validate before calling
graph = await get_graph(gid, version=v, user_id=uid)
if graph and not graph.webhook_input_node:
raise ValueError('Graph needs a webhook trigger block before trigger setup') Type guard
def supports_webhook_trigger(graph) -> bool:
"""True when the graph has a webhook-capable input node."""
return graph.webhook_input_node is not None Try / catch
try:
await setup_triggered_preset(...)
except InvalidInputError as e:
if 'webhook trigger node' in str(e):
raise NeedsWebhookBlock('Add a webhook trigger block to the agent') from e
raise Prevention
- Only offer 'set up trigger' UI for graphs where webhook_input_node exists.
- Gate trigger setup in graph templates to webhook-based starts.
When it happens
Trigger: POST /presets/setup-trigger for a graph built with a manual/scheduler start block instead of a webhook block; a graph whose webhook node was removed in a newer version while an older version_id was passed; calling the setup-trigger RPC on a plain agent graph.
Common situations: Developer assumes any agent can be webhook-triggered; UI allows trigger setup for non-webhook graphs; graph duplicated from a webhook template then had the webhook node deleted.
Related errors
- Could not set up webhook: {feedback}
- Graph #{graph_id} is not accessible (anymore)
- Graph #{current.graph_id} is not accessible (anymore)
- Could not update trigger configuration: {feedback}
- Preset #{preset_id} not found
AI-assisted analysis of Significant-Gravitas/AutoGPT@9c8bb5550f (2026-08-14).
Data as JSON: /api/errors/b694441e0549240c.
Report an issue: GitHub.