---
title: "Trigger Investigation"
method: POST
path: "/api/v1/report-ai/investigations/trigger"
tags: ["report-ai", "investigations"]
---

# Trigger Investigation

`POST /api/v1/report-ai/investigations/trigger`

Manually trigger a new investigation.

## Request body

- ManualTriggerRequest — Request to manually trigger an investigation.
  - `report_agent_id` string, uuid, required
  - `external_ticket_id` string, nullable
  - `interaction_summary` string, required
  - `interaction_content` string, required
  - `customer_email` string, nullable
  - `customer_name` string, nullable
  - `customer_phone` string, nullable
  - `interaction_metadata` object

## Response `200`

Existing investigation returned (idempotent)

- InvestigationRead — Schema for reading an Investigation.
  - `id` string, uuid, required
  - `created_at` string, date-time, required
  - `tenant_id` string, uuid, required
  - `report_agent_id` string, uuid, required
  - `report_agent_name` string, required
  - `report_agent_type` 'analysis' | 'action', required — Whether this agent analyzes interactions or takes actions.
  - `trigger_source` 'voice_call_ended' | 'text_session_ended' | 'crm_webhook' | 'slack_event' | 'manual' | 'scheduled', required — Where the investigation was triggered from.
  - `triggered_by_user_id` string, uuid, nullable, required
  - `external_ticket_id` string, nullable, required
  - `voice_call_id` string, uuid, nullable, required
  - `text_session_id` string, uuid, nullable, required
  - `interaction_summary` string, required
  - `interaction_content` string, required
  - `customer_email` string, nullable, required
  - `customer_name` string, nullable, required
  - `customer_phone` string, nullable, required
  - `interaction_metadata` object, required
  - `structured_extraction` object, nullable, required
  - `status` 'pending' | 'skipped' | 'processing' | 'completed' | 'failed', required — Investigation lifecycle status.
  - `started_at` string, date-time, nullable, required
  - `completed_at` string, date-time, nullable, required
  - `error_message` string, nullable, required
  - `retry_count` integer, required
  - `skip_reason` 'empty' | 'spam' | 'automated' | 'duplicate' | 'low_quality' | 'unsupported_language', required — Why an investigation was skipped after triage.
  - `triage_confidence` number, nullable, required
  - `triage_details` string, nullable, required
  - `matched_scenario_id` string, uuid, nullable, required
  - `matched_scenario_name` string, nullable, required
  - `report_json` object, nullable, required
  - `customer_profile_id` string, uuid, nullable, required
  - `thread_id` string, uuid, nullable
  - `lifecycle_status` string
  - `closed_reason` string, nullable
  - `closed_at` string, date-time, nullable
  - `closed_by_user_id` string, uuid, nullable
  - `closed_note` string, nullable
  - `superseded_by_id` string, uuid, nullable
  - `opened_by_message_id` string, uuid, nullable

## Other responses

- `201` — Successful Response
- `404` — Report agent not found
- `422` — Validation Error

## Changes

> 17 revisions in range; 1 not diffed.

- **2026-09-03** `d65b8fefae34` — 2 info
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status

[Change history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/report-ai/investigations/trigger/post.md)

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getanana/apis/cleon-api/revisions/94579f820778?raw)
