Findings
Get finding evidence
Returns the evidence behind a finding: daily history, source events, affected and comparison conversation IDs, co-occurring events, and the same data for any grouped findings.
Evidence is bounded to 100 source events, 50 affected conversations,
20 comparison conversations, 20 co-occurring event types, and 25 grouped findings.
Those budgets are shared across the finding and its grouped findings, not applied
per finding. The coverage object reports what was returned against those limits.
When evidence cannot be read for the finding’s source, this still returns 200
with an object carrying error instead of the evidence fields.
GET
/
findings
/
{finding_id}
/
evidence
Get finding evidence
curl --request GET \
--url https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"finding": {
"id": "8f14e45f-ceea-467a-9e1a-1b2c3d4e5f60",
"source_type": "project_event",
"source_key": "conversation.user_frustrated",
"signal_name": "conversation.user_frustrated",
"direction": "rising",
"status": "open",
"window_start_at": "2026-08-19T00:00:00.000000Z",
"window_end_at": "2026-08-26T00:00:00.000000Z",
"affected_count": 42,
"baseline_count": 11,
"current_rate": 0.18,
"baseline_rate": 0.05,
"last_observed_at": "2026-08-26T09:12:00.000000Z"
},
"event_definition": {
"id": "2b3c4d5e-6f70-4819-a2b3-c4d5e6f70819",
"name": "conversation.user_frustrated",
"display_name": "User frustrated",
"description": "The user showed frustration during the conversation.",
"property_schema": null
},
"coverage": {
"source_event_count": 128,
"source_events_returned": 100,
"affected_conversations_returned": 50,
"comparison_conversations_returned": 20,
"source_event_limit": 100,
"affected_conversation_limit": 50,
"comparison_conversation_limit": 20,
"note": "Source events were truncated to the limit."
},
"workflow": {
"id": "c0ffee00-1111-4222-8333-444455556666",
"name": "Order support"
},
"daily_history": [
{
"bucket_on": "2026-08-25",
"event_count": 19,
"conversation_count": 17
}
],
"source_events": [
{
"id": "7d1f0e2a-3b4c-4d5e-9f60-718293a4b5c6",
"name": "conversation.user_frustrated",
"occurred_at": "2026-08-25T14:02:00.000000Z",
"conversation_id": "9e8d7c6b-5a49-4382-b1c0-fedcba987654",
"properties": {
"turn": 6
},
"whatsapp_config": {
"id": "3c4d5e6f-7081-49a2-b3c4-d5e6f7081920",
"kind": "whatsapp_cloud",
"name": "Support line",
"business_phone_number": "+16266694464",
"meta_phone_number_id": "123456789012345"
},
"source_workflow": {
"workflow_id": "c0ffee00-1111-4222-8333-444455556666",
"execution_id": "4d5e6f70-8192-4ab3-c4d5-e6f708192031",
"snapshot_id": "5e6f7081-9203-4bc4-d5e6-f70819203142",
"snapshot_version": 12,
"test_mode": false
}
}
],
"affected_conversation_ids": [
"9e8d7c6b-5a49-4382-b1c0-fedcba987654"
],
"comparison_conversation_ids": [
"1f2e3d4c-5b6a-4798-8a90-0b1c2d3e4f50"
],
"co_occurring_events": [
{
"name": "conversation.handoff_requested",
"event_count": 14
}
],
"grouped_findings": [],
"evidence_by_finding": []
}
}{
"error": "<string>"
}{
"error": "Finding not found in this project.",
"code": "finding_not_found"
}Was this page helpful?
⌘I
Get finding evidence
curl --request GET \
--url https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/findings/{finding_id}/evidence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"finding": {
"id": "8f14e45f-ceea-467a-9e1a-1b2c3d4e5f60",
"source_type": "project_event",
"source_key": "conversation.user_frustrated",
"signal_name": "conversation.user_frustrated",
"direction": "rising",
"status": "open",
"window_start_at": "2026-08-19T00:00:00.000000Z",
"window_end_at": "2026-08-26T00:00:00.000000Z",
"affected_count": 42,
"baseline_count": 11,
"current_rate": 0.18,
"baseline_rate": 0.05,
"last_observed_at": "2026-08-26T09:12:00.000000Z"
},
"event_definition": {
"id": "2b3c4d5e-6f70-4819-a2b3-c4d5e6f70819",
"name": "conversation.user_frustrated",
"display_name": "User frustrated",
"description": "The user showed frustration during the conversation.",
"property_schema": null
},
"coverage": {
"source_event_count": 128,
"source_events_returned": 100,
"affected_conversations_returned": 50,
"comparison_conversations_returned": 20,
"source_event_limit": 100,
"affected_conversation_limit": 50,
"comparison_conversation_limit": 20,
"note": "Source events were truncated to the limit."
},
"workflow": {
"id": "c0ffee00-1111-4222-8333-444455556666",
"name": "Order support"
},
"daily_history": [
{
"bucket_on": "2026-08-25",
"event_count": 19,
"conversation_count": 17
}
],
"source_events": [
{
"id": "7d1f0e2a-3b4c-4d5e-9f60-718293a4b5c6",
"name": "conversation.user_frustrated",
"occurred_at": "2026-08-25T14:02:00.000000Z",
"conversation_id": "9e8d7c6b-5a49-4382-b1c0-fedcba987654",
"properties": {
"turn": 6
},
"whatsapp_config": {
"id": "3c4d5e6f-7081-49a2-b3c4-d5e6f7081920",
"kind": "whatsapp_cloud",
"name": "Support line",
"business_phone_number": "+16266694464",
"meta_phone_number_id": "123456789012345"
},
"source_workflow": {
"workflow_id": "c0ffee00-1111-4222-8333-444455556666",
"execution_id": "4d5e6f70-8192-4ab3-c4d5-e6f708192031",
"snapshot_id": "5e6f7081-9203-4bc4-d5e6-f70819203142",
"snapshot_version": 12,
"test_mode": false
}
}
],
"affected_conversation_ids": [
"9e8d7c6b-5a49-4382-b1c0-fedcba987654"
],
"comparison_conversation_ids": [
"1f2e3d4c-5b6a-4798-8a90-0b1c2d3e4f50"
],
"co_occurring_events": [
{
"name": "conversation.handoff_requested",
"event_count": 14
}
],
"grouped_findings": [],
"evidence_by_finding": []
}
}{
"error": "<string>"
}{
"error": "Finding not found in this project.",
"code": "finding_not_found"
}
