---
title: "Task run failed"
method: POST
path: "task_run.failed"
tags: ["TaskRuns"]
---

# Task run failed

`POST task_run.failed` (webhook)

Triggered when a task run fails

## Headers

- `webhook-id` string, required
- `webhook-timestamp` string, required
- `webhook-signature` string, required

## Payload

- object
  - `id` string, required: Unique identifier for this webhook event
  - `object` 'event', required
  - `type` 'task_run.failed', required: The event type
  - `created_at` string, date-time, required: ISO 8601 timestamp of when the event was created
  - `api_version` string, required: API version used to generate the payload
  - `data` object, required: `object` is the resource exactly as its API endpoint returns it.
    - `object` AiTaskRun, required
      - `id` string, required
      - `object` string, required
      - `task_id` string, required
      - `task_name` string, required
      - `chat_id` string, nullable, required: The run's own conversation (`aichat_...`): what it read, called and said. Read it with `search_chats`.
      - `status` 'pending' | 'running' | 'completed' | 'failed' | 'needs_input' | 'timed_out' | 'unknown' | 'skipped', required
      - `summary` string, nullable, required
      - `error_message` string, nullable, required
      - `test_run` boolean, required
      - `input_tokens` integer, required
      - `output_tokens` integer, required
      - `credits_consumed` integer, required
      - `tool_calls_count` integer, required
      - `duration_ms` integer, nullable, required
      - `started_at` string, date-time, nullable, required
      - `completed_at` string, date-time, nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `skip_reason` 'condition' | 'no_paid_plan_or_credits' | 'no_recent_activity' | 'no_task_activity' | 'no_personal_sources' | 'wake_gate' | 'wake_limit' | 'rate_limited' | 'misfire' | 'task_busy' | 'account_at_capacity' | 'null', nullable, required
      - `skip_count` integer, required
      - `delivery_status` 'delivered' | 'not_delivered' | 'not_requested' | 'unknown', required
      - `completion` 'verified' | 'recorded' | 'recovered' | 'null', nullable, required: How the agent closed a completed run: `verified` (it re-checked the result), `recorded` (it reported without re-checking), or `recovered` (it never reported; `summary` is its last message). Null unless an agent turn completed the run.
      - `trigger_source` 'scheduled' | 'event' | 'manual', required
      - `trigger_event` object, nullable, required: The event that started this run, `{type, data}`, exactly as the run received it; `data` matches the event's webhook payload. Null for a run no event started. POST /task_runs/{id}/replay runs the task again on it.
      - `replay_of` string, nullable, required: The run (`trun_...`) whose event this run replays. Null unless started by POST /task_runs/{id}/replay.
      - `captured_deliveries` unknown[], required
        - unknown
      - `pending_approval_ids` unknown[], required
        - unknown

## Acknowledgement `200`

Return any 2xx status within 5 seconds to acknowledge receipt.

---

[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)
