Findings
List findings
Returns the findings for the project associated with your API key, most recently qualified first.
Only findings with status candidate or open are listed. Quiet findings,
dismissed findings, and findings from sources Kapso does not read evidence from
yet are omitted. To read a quiet or dismissed finding, fetch it by ID.
Findings that belong to the same group are returned together on the same page,
so a page can hold slightly more than limit items.
GET
/
findings
List findings
curl --request GET \
--url https://api.kapso.ai/platform/v1/findings \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/platform/v1/findings"
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', 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",
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"
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")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/findings")
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": [
{
"id": "8f14e45f-ceea-467a-9e1a-1b2c3d4e5f60",
"signal_name": "conversation.user_frustrated",
"direction": "rising",
"status": "open",
"affected_count": 42,
"affected_unit": "conversations",
"last_observed_at": "2026-08-26T09:12:00.000000Z",
"related_findings_count": 2,
"investigation": {
"status": "completed",
"retryable": false,
"retry_reason": null,
"completed_at": "2026-08-26T10:04:00.000000Z",
"error_message": null,
"cause_title": "Checkout step asks for the order number twice",
"summary": "Users repeat themselves when the workflow loses the order number."
},
"verification": null
}
],
"paging": {
"cursors": {
"before": "eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNlQwOToxMjowMC4wMDAwMDBaIl19",
"after": "eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNVQwODowMDowMC4wMDAwMDBaIl19"
},
"next": "eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNVQwODowMDowMC4wMDAwMDBaIl19",
"previous": null
}
}{
"error": "Invalid limit parameter"
}{
"error": "<string>"
}{
"error": "Findings is not enabled for this project.",
"code": "findings_not_enabled"
}Authorizations
Query Parameters
Findings per page. Must be between 1 and 25. Any other value returns 400;
it is not clamped.
Required range:
1 <= x <= 25Opaque cursor from a previous response's paging.next. Cannot be combined
with before.
Opaque cursor from a previous response's paging.previous. Cannot be combined
with after.
Was this page helpful?
⌘I
List findings
curl --request GET \
--url https://api.kapso.ai/platform/v1/findings \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/platform/v1/findings"
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', 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",
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"
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")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/findings")
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": [
{
"id": "8f14e45f-ceea-467a-9e1a-1b2c3d4e5f60",
"signal_name": "conversation.user_frustrated",
"direction": "rising",
"status": "open",
"affected_count": 42,
"affected_unit": "conversations",
"last_observed_at": "2026-08-26T09:12:00.000000Z",
"related_findings_count": 2,
"investigation": {
"status": "completed",
"retryable": false,
"retry_reason": null,
"completed_at": "2026-08-26T10:04:00.000000Z",
"error_message": null,
"cause_title": "Checkout step asks for the order number twice",
"summary": "Users repeat themselves when the workflow loses the order number."
},
"verification": null
}
],
"paging": {
"cursors": {
"before": "eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNlQwOToxMjowMC4wMDAwMDBaIl19",
"after": "eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNVQwODowMDowMC4wMDAwMDBaIl19"
},
"next": "eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNVQwODowMDowMC4wMDAwMDBaIl19",
"previous": null
}
}{
"error": "Invalid limit parameter"
}{
"error": "<string>"
}{
"error": "Findings is not enabled for this project.",
"code": "findings_not_enabled"
}
