Findings
Get a finding
Fetch a single finding by id. Internal triage columns are never serialized on this org-facing surface. Returns 404 rather than 403 for a finding in another organization, and for a draft the caller may not see.
GET
/
api
/
v1
/
orgs
/
{orgSlug}
/
findings
/
{findingId}
Get a finding
curl --request GET \
--url https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings/{findingId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings/{findingId}"
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/{findingId}', 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/{findingId}",
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/{findingId}"
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/{findingId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings/{findingId}")
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{
"id": "<string>",
"orgId": "<string>",
"agentId": "<string>",
"sourceAgentName": "<string>",
"isManual": true,
"shownVerbatim": true,
"severity": "<string>",
"title": "<string>",
"description": "<string>",
"resourceType": "<string>",
"resourceName": "<string>",
"resourceArn": "<string>",
"resourceKey": "<string>",
"targetUrl": "<string>",
"category": "<string>",
"tags": [
"<string>"
],
"cwe": "<string>",
"owasp": "<string>",
"status": "<string>",
"visibility": "<string>",
"taskIds": "<unknown>",
"tickets": [
{
"id": "<string>",
"provider": "<string>",
"integrationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"accountAlias": "<string>",
"externalId": "<string>",
"identifier": "<string>",
"url": "<string>",
"createdAt": "<string>",
"syncStatus": "syncing",
"syncError": "<string>",
"syncedAt": "<string>"
}
],
"acknowledgedAt": "<string>",
"acknowledgedBy": "<string>",
"falsePositiveReason": "<string>",
"closedReason": "<string>",
"inReviewReason": "<string>",
"inReviewUrl": "<string>",
"sourceName": "<string>",
"origin": "<string>",
"ingestionStatus": "<string>",
"ingestedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"attachmentCount": 4503599627370495,
"sourceSecret": {
"secretFindingId": "<string>",
"ruleId": "<string>",
"verificationState": "<string>",
"isActive": true,
"activeLastSeenAt": "<string>",
"lastValidatedAt": "<string>",
"validationMethod": "<string>"
},
"exploits": [
{
"id": "<string>",
"steps": [
"<string>"
],
"resultsAtExploitTime": "<string>",
"retestProbe": "<string>",
"oracle": "<string>",
"drivenBy": "<string>",
"createdAt": "<string>",
"exploitedAt": "<string>",
"lineageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}{
"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.
Response
Default Response
Show child attributes
Show child attributes
Required range:
0 <= x <= 9007199254740991Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I
Get a finding
curl --request GET \
--url https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings/{findingId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings/{findingId}"
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/{findingId}', 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/{findingId}",
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/{findingId}"
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/{findingId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tolmo.com/api/v1/orgs/{orgSlug}/findings/{findingId}")
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{
"id": "<string>",
"orgId": "<string>",
"agentId": "<string>",
"sourceAgentName": "<string>",
"isManual": true,
"shownVerbatim": true,
"severity": "<string>",
"title": "<string>",
"description": "<string>",
"resourceType": "<string>",
"resourceName": "<string>",
"resourceArn": "<string>",
"resourceKey": "<string>",
"targetUrl": "<string>",
"category": "<string>",
"tags": [
"<string>"
],
"cwe": "<string>",
"owasp": "<string>",
"status": "<string>",
"visibility": "<string>",
"taskIds": "<unknown>",
"tickets": [
{
"id": "<string>",
"provider": "<string>",
"integrationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"accountAlias": "<string>",
"externalId": "<string>",
"identifier": "<string>",
"url": "<string>",
"createdAt": "<string>",
"syncStatus": "syncing",
"syncError": "<string>",
"syncedAt": "<string>"
}
],
"acknowledgedAt": "<string>",
"acknowledgedBy": "<string>",
"falsePositiveReason": "<string>",
"closedReason": "<string>",
"inReviewReason": "<string>",
"inReviewUrl": "<string>",
"sourceName": "<string>",
"origin": "<string>",
"ingestionStatus": "<string>",
"ingestedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"attachmentCount": 4503599627370495,
"sourceSecret": {
"secretFindingId": "<string>",
"ruleId": "<string>",
"verificationState": "<string>",
"isActive": true,
"activeLastSeenAt": "<string>",
"lastValidatedAt": "<string>",
"validationMethod": "<string>"
},
"exploits": [
{
"id": "<string>",
"steps": [
"<string>"
],
"resultsAtExploitTime": "<string>",
"retestProbe": "<string>",
"oracle": "<string>",
"drivenBy": "<string>",
"createdAt": "<string>",
"exploitedAt": "<string>",
"lineageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}{
"statusCode": 123,
"code": "<string>",
"error": "<string>",
"message": "<string>"
}