List Triage findings
curl --request GET \
--url https://neo.api.projectdiscovery.io/api/v1/triage/findings \
--header 'Authorization: Bearer <token>'import requests
url = "https://neo.api.projectdiscovery.io/api/v1/triage/findings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://neo.api.projectdiscovery.io/api/v1/triage/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://neo.api.projectdiscovery.io/api/v1/triage/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://neo.api.projectdiscovery.io/api/v1/triage/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://neo.api.projectdiscovery.io/api/v1/triage/findings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://neo.api.projectdiscovery.io/api/v1/triage/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{
"count": 123,
"findings": [
{
"context": "<string>",
"description": "<string>",
"external_key": "<string>",
"first_seen_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_seen_at": "2023-11-07T05:31:56Z",
"reporter": "<string>",
"revision": 123,
"severity": "none",
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_kind": "hackerone",
"source_name": "<string>",
"source_status": "<string>",
"title": "<string>",
"url": "<string>",
"archived_at": "2023-11-07T05:31:56Z",
"latest_run": {
"created_at": "2023-11-07T05:31:56Z",
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"finding_revision": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model": "<string>",
"status": "queued",
"completed_at": "2023-11-07T05:31:56Z",
"error_code": "<string>",
"internal_summary": "<string>",
"suggested_response": "<string>",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_status": "pending",
"triage_severity": "none",
"triage_status": "valid"
},
"raw": {}
}
],
"next_cursor": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}Triage
List Triage findings
List the findings of every active source of your team (HackerOne, GitHub, Security Inbox and custom API sources), most recently seen first, with cursor pagination. Each finding has an opaque id that starts triage runs.
GET
/
api
/
v1
/
triage
/
findings
List Triage findings
curl --request GET \
--url https://neo.api.projectdiscovery.io/api/v1/triage/findings \
--header 'Authorization: Bearer <token>'import requests
url = "https://neo.api.projectdiscovery.io/api/v1/triage/findings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://neo.api.projectdiscovery.io/api/v1/triage/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://neo.api.projectdiscovery.io/api/v1/triage/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://neo.api.projectdiscovery.io/api/v1/triage/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://neo.api.projectdiscovery.io/api/v1/triage/findings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://neo.api.projectdiscovery.io/api/v1/triage/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{
"count": 123,
"findings": [
{
"context": "<string>",
"description": "<string>",
"external_key": "<string>",
"first_seen_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_seen_at": "2023-11-07T05:31:56Z",
"reporter": "<string>",
"revision": 123,
"severity": "none",
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_kind": "hackerone",
"source_name": "<string>",
"source_status": "<string>",
"title": "<string>",
"url": "<string>",
"archived_at": "2023-11-07T05:31:56Z",
"latest_run": {
"created_at": "2023-11-07T05:31:56Z",
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"finding_revision": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model": "<string>",
"status": "queued",
"completed_at": "2023-11-07T05:31:56Z",
"error_code": "<string>",
"internal_summary": "<string>",
"suggested_response": "<string>",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_status": "pending",
"triage_severity": "none",
"triage_status": "valid"
},
"raw": {}
}
],
"next_cursor": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>",
"param": "<string>",
"turnstile_site_key": "<string>"
}Authorizations
BearerAuthApiKeyAuth
JWT authentication token
Query Parameters
Only findings of this source.
True lists only archived findings, false only active ones. Omit to list both.
The next_cursor of the previous page.
Required string length:
1 - 200Maximum number of findings. Defaults to 50.
Required range:
1 <= x <= 100
