unauthorized | Invalid API key, or provider auth rejected | Check the key; the app may need re-auth |
forbidden | Connected account lacks the required scopes | Reconnect with the needed permissions |
integration_not_found | Unknown integration_id | Check the slug via /api/integrations |
action_not_found | Unknown action_id for that integration | Check via /api/actions?integration_id=… |
integration_not_connected | App isn’t connected | Connect it in the dashboard (recommended_next_action) |
reauth_required | Connection expired or revoked | Reconnect the app (recommended_next_action with force_reconnect) |
validation_error | Bad or missing arguments | Fix input; check the action’s input_schema |
policy_blocked | Write needs confirmation, or an ambiguous connection | Resend with confirm: true, or disambiguate the connection |
rate_limited | Provider rate limit hit | Back off and retry; honor Retry-After |
timeout | Provider took too long | Retry |
unsupported_operation | Provider/operation unavailable | Don’t retry as-is |
execution_failed | Action ran and failed | Inspect message / hint |