AI Automation · Errors
Beyond global errors.
Flows
| HTTP | Error | Meaning |
|---|---|---|
| 400 | llm_step.outputSchema must be valid JSON Schema | Invalid schema. |
| 400 | cronExpression invalid: <details> | Malformed cron expression. |
| 400 | templating: ${env.X} not configured | Referenced env var missing in dashboard's env config. |
| 412 | flow.triggerType=webhook but no webhookSecret | Edge case: flow somehow lost its secret. Rotate to recreate. |
| 413 | body too large (>1MB) | LLM input bodies capped at 1MB. |
Runs
| HTTP | Error | Meaning |
|---|---|---|
| 422 | llm_step output failed schema validation after 3 attempts | Model can't produce schema-valid output; check schema vs prompt. |
| 422 | tool call timed out: 30s | A tool the LLM called didn't respond. Tool-side timeout, not LLM-side. |
| 429 | inference quota exceeded | Per-org daily/monthly inference budget hit. Configure in dashboard. |
Webhook triggers
| HTTP | Error | Meaning |
|---|---|---|
| 401 | signature missing or invalid | X-Quantum-Signature header wrong / missing. |
| 401 | signature uses expired (rotated) secret | Grace window passed; rotate sender to new secret. |
| 404 | flow not found or paused | Token is valid but flow doesn't exist or is paused. |
Approvals
| HTTP | Error | Meaning |
|---|---|---|
| 422 | proposedActionOverride: schema mismatch | Your override doesn't fit the node's declared output shape. |
| 409 | run already resolved (succeeded) | Approval acted on a finished run. |
Conversations & agents
| HTTP | Error | Meaning |
|---|---|---|
| 400 | agent has no tools defined for tool message | You posted a role: tool message but the agent has no tool with that slug. |
| 409 | tool call already resolved | Duplicate tool result post. |
| 422 | context too large (history + new message > model limit) | Prune old turns or summarize. |
Watchers & incidents
| HTTP | Error | Meaning |
|---|---|---|
| 400 | cron_check watcher requires source.cronExpression | Per-source-kind validation; cron source needs the expression. |
| 400 | sibling_event watcher requires source.serviceSlug + source.eventName | Same — sibling-event source needs both. |
| 400 | one or more channelIntegrationIds not found in this org | Referenced integration doesn't belong to this org. |
| 409 | incident already resolved | Tried to ack/escalate a resolved incident. |
Digests
| HTTP | Error | Meaning |
|---|---|---|
| 400 | invalid cron expression | cronExpression failed cron-parser validation. |
| 400 | one or more recipient integrationIds not found in this org | Bad integration ID in recipients. |
| 422 | data source returned non-JSON; cannot summarize | A siblingApi data source produced output the LLM can't ingest. Restrict the path to JSON-returning endpoints. |
Evals
| HTTP | Error | Meaning |
|---|---|---|
| 404 | template not found | templateId doesn't belong to this org. |
| 400 | inputSet must be a non-empty array | No test cases provided. |