---
title: "Check the health of your automations"
method: GET
path: "/tasks/health"
tags: ["Tasks"]
---

# Check the health of your automations

`GET /tasks/health`

## Request

- Base URL: `https://api.crevio.co/v1`
- URL: `https://api.crevio.co/v1/tasks/health`
- Auth: API key in header `Authorization`

One verdict per active scheduled or event task you can see, from its real runs in the window: `delete` (its last 5 runs all failed or went undelivered), `consolidate` (same instructions and trigger as an earlier task, named in `duplicate_of`), `add_condition` (runs more than 6 times a day and at least 70% of runs find nothing), `run_less_often` (runs more than daily and at least half find nothing), `switch_model` (a quality-tier task that mostly finds nothing), or `keep`. Each carries the monthly credits it is projected to spend, what the verdict would save, and how many of its latest runs failed in a row with the last error, plus the integrations that need reconnecting and their reconnect links. Read-only: nothing is changed. Report the verdicts and let the owner decide.

## Query parameters

- `window_days` integer

## Response `200`

The checkup report.

- object
  - `object` 'task_health', required
  - `window_days` integer, required
  - `generated_at` string, date-time, required
  - `tasks` object[], required
    - `id` string, required: Task id (task_...)
    - `name` string, required
    - `trigger_type` string, required
    - `cron_expression` string, nullable, required
    - `event_type` string, nullable, required
    - `model_id` string, nullable, required
    - `runs` object, required: Real runs in the window: executed (not skipped), completed, silent (completed and delivered nothing on a task that delivers), and skipped occurrences.
      - `executed` integer, required
      - `completed` integer, required
      - `silent` integer, required
      - `skipped` integer, required
    - `credits_in_window` integer, required: Credits the task's runs consumed in the window.
    - `runs_per_day` number, required: Executed runs a day at the current schedule and skip rate (observed rate for event tasks).
    - `projected_monthly_credits` integer, nullable, required: Credits the task will spend in 30 days at its observed cost per run. Null when no run in the account has a cost to project from.
    - `estimated` boolean, required: True when the task had no runs in the window and its projection uses the account's average cost per run.
    - `verdict` 'delete' | 'consolidate' | 'add_condition' | 'run_less_often' | 'switch_model' | 'keep', required
    - `reason` string, required: One sentence explaining the verdict from the observed runs.
    - `saving_low` integer, nullable, required: Conservative monthly credit saving if the verdict is applied. Null when it cannot be estimated (switch_model).
    - `saving_high` integer, nullable, required: Optimistic monthly credit saving if the verdict is applied. Null when it cannot be estimated (switch_model).
    - `duplicate_of` string, nullable, required: For `consolidate`: the earlier task (task_...) with the same instructions and trigger.
    - `consecutive_failures` integer, required: How many of its latest runs failed in a row; 0 once a run succeeds.
    - `last_error` string, nullable, required: The error of its latest failed run, while it is still failing (`consecutive_failures` above 0). Null otherwise.
  - `totals` object, required
    - `projected_monthly_credits` integer, required
    - `saving_low` integer, required
    - `saving_high` integer, required
  - `broken_integrations` object[], required: Connections that stopped working; every task using them fails until they are reconnected.
    - `app` string, required
    - `label` string, required
    - `status` 'error' | 'reconnect_required', required
    - `reconnect_url` string, uri, required: Opens the reconnect flow for this connection in one click.

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `429`: Rate limit exceeded — 600 requests per minute per credential. Retry after the number of seconds in `Retry-After`.
- `500`: Internal server error

---

[API](https://skmtc.dev/crevio/apis/crevio-api-v1.md) · [All operations](https://skmtc.dev/crevio/apis/crevio-api-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/crevio/apis/crevio-api-v1/revisions/2219f18ad651?raw)
