Findings
List findings
List every finding in the organization — Tolmo-authored and third-party scanner rows — from the unified findings read. Filter with origin=tolmo for Tolmo-authored rows only. The lean catalog (source/agent facets, idsOnly) lives at GET /findings/catalog.
GET
/
api
/
v1
/
orgs
/
{orgSlug}
/
findings
List findings
curl --request GET \
--url https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tolmo.com/api/v1/orgs/{orgSlug}/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.tolmo.com/api/v1/orgs/{orgSlug}/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 => [
"Authorization: Bearer <token>"
],
]);
$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.tolmo.com/api/v1/orgs/{orgSlug}/findings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.tolmo.com/api/v1/orgs/{orgSlug}/findings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"externalId": "<string>",
"title": "<string>",
"severity": "<string>",
"origin": "<string>",
"recordOrigin": "external",
"originalPlatformUrl": "<string>",
"originalPlatformStatus": "<string>",
"status": "open",
"statusEditable": true,
"platformResolution": "<string>",
"inReviewReason": "<string>",
"inReviewUrl": "<string>",
"state": "unprocessed",
"agenticStatus": "<string>",
"lastRetestVerdict": "<string>",
"lastRetestedAt": "2023-11-07T05:31:56Z",
"retest": "none",
"cveDispatchable": true,
"resourceKey": "<string>",
"resourceName": "<string>",
"kind": "<string>",
"ruleName": "<string>",
"targetUrls": [
"<string>"
],
"firstSeenAt": "<string>",
"lastSeenAt": "<string>",
"updatedAt": "<string>",
"lastActivity": {
"kind": "state",
"from": "<string>",
"to": "<string>",
"at": "2023-11-07T05:31:56Z",
"by": "<string>"
},
"tolmoFinding": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"severity": "<string>",
"status": "<string>",
"relationship": "created",
"url": "<string>"
}
}
],
"total": 4503599627370495,
"page": 4503599627370495,
"pageSize": 4503599627370495,
"facets": {
"origins": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"severities": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"states": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"retests": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"rules": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"statuses": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"providerStatuses": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"verdicts": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
]
},
"scope": "open",
"includeInfo": true,
"hiddenInformational": 4503599627370495,
"nextCursor": "<string>"
}{
"statusCode": 123,
"code": "<string>",
"error": "<string>",
"message": "<string>"
}Authorizations
A Tolmo API token, sent as Authorization: Bearer <token>. Either a user token (usr_tok.*, minted by tolmo auth login, scoped to your own permissions) or an org API token created in the Tolmo app, for CI and automation.
Path Parameters
Query Parameters
Required string length:
1 - 512Required string length:
1 - 255Required string length:
1 - 64Required string length:
1 - 512Required string length:
1 - 128Required string length:
1 - 512Required string length:
1 - 256Required string length:
1 - 64Available options:
tolmo, none Available options:
open, all Required string length:
1 - 4096Required range:
1 <= x <= 500Required range:
1 <= x <= 100Required string length:
1 - 2048Required range:
1 <= x <= 100Response
Default Response
Show child attributes
Show child attributes
Required range:
0 <= x <= 9007199254740991Required range:
0 < x <= 9007199254740991Required range:
0 < x <= 9007199254740991Cross-filtered facets for page mode; all arrays are empty in cursor mode. The state/retest/status/providerStatus/verdict facets ignore scope, so the pickers still show what the default view is hiding.
Show child attributes
Show child attributes
Available options:
open, all Required range:
0 <= x <= 9007199254740991⌘I
List findings
curl --request GET \
--url https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tolmo.com/api/v1/orgs/{orgSlug}/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.tolmo.com/api/v1/orgs/{orgSlug}/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 => [
"Authorization: Bearer <token>"
],
]);
$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.tolmo.com/api/v1/orgs/{orgSlug}/findings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.tolmo.com/api/v1/orgs/{orgSlug}/findings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"externalId": "<string>",
"title": "<string>",
"severity": "<string>",
"origin": "<string>",
"recordOrigin": "external",
"originalPlatformUrl": "<string>",
"originalPlatformStatus": "<string>",
"status": "open",
"statusEditable": true,
"platformResolution": "<string>",
"inReviewReason": "<string>",
"inReviewUrl": "<string>",
"state": "unprocessed",
"agenticStatus": "<string>",
"lastRetestVerdict": "<string>",
"lastRetestedAt": "2023-11-07T05:31:56Z",
"retest": "none",
"cveDispatchable": true,
"resourceKey": "<string>",
"resourceName": "<string>",
"kind": "<string>",
"ruleName": "<string>",
"targetUrls": [
"<string>"
],
"firstSeenAt": "<string>",
"lastSeenAt": "<string>",
"updatedAt": "<string>",
"lastActivity": {
"kind": "state",
"from": "<string>",
"to": "<string>",
"at": "2023-11-07T05:31:56Z",
"by": "<string>"
},
"tolmoFinding": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"severity": "<string>",
"status": "<string>",
"relationship": "created",
"url": "<string>"
}
}
],
"total": 4503599627370495,
"page": 4503599627370495,
"pageSize": 4503599627370495,
"facets": {
"origins": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"severities": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"states": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"retests": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"rules": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"statuses": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"providerStatuses": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
],
"verdicts": [
{
"value": "<string>",
"label": "<string>",
"count": 4503599627370495
}
]
},
"scope": "open",
"includeInfo": true,
"hiddenInformational": 4503599627370495,
"nextCursor": "<string>"
}{
"statusCode": 123,
"code": "<string>",
"error": "<string>",
"message": "<string>"
}