Error reference
Use the HTTP status, response body, and operation together to decide what to do next. A failed request and a failed workflow run are different: a successful submission can later produce a run with status: "FAILED".
On this page
Error responsesStatus guideRetry policyDiagnose a failed runInformation to retain for supportError responses
Most API errors use a detail property:
{"detail": "Permission denied: requires 'runs.trigger'"}detail is not always a string. Request validation commonly returns a list:
{
"detail": [
{
"type": "missing",
"loc": ["body", "flow_name"],
"msg": "Field required",
"input": {}
}
]
}Validation entries may contain additional fields. Dependency build validation can return detail.validation_errors. AI Studio can return an operation-specific validation envelope with workflow_errors and updated session state. Retain a sanitized copy of an unexpected body instead of assuming every failure has a string message.
Status guide
| Status | Typical cause | Resolution |
|---|---|---|
400 | Invalid operation, missing business value, bad cursor, unsupported runtime, or canceling a completed run | Correct the request using the operation's requirements. |
401 | Missing, invalid, expired, or revoked credential | Sign in again or replace the key. |
403 | Insufficient permission, workspace mismatch, suspended access, or artifact ownership mismatch | Check /me, workspace selection, and key scopes. |
404 | Resource not found in the accessible workspace, or a feature is unavailable | Confirm the identifier and workspace. Ask the owner to confirm feature availability. |
409 | Conflict with current state, including a device grant or AI turn | Read current state and follow the operation's recovery instructions. |
410 | Device authorization expired or already consumed | Start a new dagy login flow. |
422 | Request or operation-specific validation failed | Fix reported fields or dependency/workflow conflicts. |
429 | Request rate or usage quota exceeded | Distinguish a temporary request budget from a monthly quota using detail and usage endpoints. |
500 | Service failure or unavailable configuration | Save the time and request identifier, retry a safe read with backoff, and contact support if persistent. |
503 | Required capability unavailable or unable to start | Retry a safe read later or ask the workspace owner to confirm availability. |
Some unavailable integration features intentionally return 404. Do not infer that credentials are invalid merely because one feature is unavailable.
Retry policy
For a transient read failure, use exponential backoff with random jitter and a maximum attempt count. Honor Retry-After when present; clients also need a fallback delay because this header is not guaranteed for every error response. A reasonable application policy starts at one second, doubles the maximum delay on each attempt, and caps it at 30 seconds.
Do not retry validation or permission failures without changing the request or credentials. Monthly quota exhaustion requires a quota reset or an account change; short sleeps will not resolve it.
Before retrying a write after a network timeout, determine whether it took effect:
- Repeating
POST /runscan create duplicate runs. Inspect recent runs and make business operations idempotent. - A dependency build may have started even if its response was lost. Read
packaging_statusfirst. - Multipart uploads should resume with their original identifiers while URLs remain valid. Abort an abandoned upload before starting again.
- Cancellation is repeatable for a run already in
CANCELLATION_REQUESTEDorCANCELLED.
Diagnose a failed run
- Read
GET /runs/{run_id}and inspect status,error_message, andtask_runs. - Read
GET /runs/{run_id}/logsand follow all returned cursors. - Check parameters, deployment version, environment, enabled variables, secrets, connectors, and dependency packages.
- Correct the cause before using retry or backfill.
Cancellation does not undo external writes. A timeout or failed task can occur after a destination accepted data. Use stable business identifiers or destination-supported deduplication to make recovery safe.
Information to retain for support
Keep the UTC timestamp, HTTP method and relative path, response status, your X-Request-Id, workspace ID, and run/deployment identifier. Include a minimal redacted request and error body. Remove bearer tokens, signed URLs, secret values, customer data, and webhook tokens before sharing logs.