---
title: "Test-fire event source"
method: POST
path: "/event_sources/{id}/test"
tags: ["EventSources"]
---

# Test-fire event source

`POST /event_sources/{id}/test`

## Request

- Base URL: `https://api.crevio.co/v1`
- URL: `https://api.crevio.co/v1/event_sources/{id}/test`
- Auth: API key in header `Authorization`

Delivers a sample payload to every task subscribed to this source's `external.<event_name>` as a **test run**: real research and output, but every write-style tool refuses and every delivery is captured on the run instead of being sent. Called from an agent chat, the chat is signalled when each run ends, so it need not poll. Returns the started runs. 422 when no task listens to the event yet, or when every subscribed task is busy or the account is out of AI credits.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `payload` object: The body a real delivery would carry; the run receives it as `event.data`. Defaults to `{}`.

## Response `202`

Accepted — the test runs execute in the background.

- ListResponseAiTaskRun
  - `object` 'list', required
  - `data` 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
  - `has_more` boolean, required
  - `url` string, required

## Other responses

- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `422`: Validation error
- `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)
