curl --request GET \
--url https://api.devin.ai/v3/organizations/{org_id}/code-scans/findings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/findings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/code-scans/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": [
{
"category": "<string>",
"code_owners": [
"<string>"
],
"code_scan_run_id": "<string>",
"created_at": 123,
"description": "<string>",
"finding_id": "<string>",
"note": "<string>",
"orchestrator_session_id": "<string>",
"pr_url": "<string>",
"recommendation": "<string>",
"reference_snippets": [
{
"commentary": "<string>",
"end_line": 123,
"file_path": "<string>",
"start_line": 123,
"code": "<string>"
}
],
"repo_name": "<string>",
"scan_id": "<string>",
"session_id": "<string>",
"severity": "critical",
"status": "open",
"title": "<string>",
"updated_at": 123,
"fix_effort": "small",
"payoff": "quick_win",
"related_finding_ids": [
"<string>"
],
"validation_artifacts": [
"<string>"
],
"validation_evidence": "<string>",
"validation_result": "confirmed",
"validation_session_id": "<string>"
}
],
"end_cursor": "<string>",
"has_next_page": false,
"total": 123
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}List Code Scan Findings (Devin API)
List Devin code scan findings for an organization, filtered by scan, repository, severity, or status, via the v3 organization API
curl --request GET \
--url https://api.devin.ai/v3/organizations/{org_id}/code-scans/findings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/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.devin.ai/v3/organizations/{org_id}/code-scans/findings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/code-scans/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": [
{
"category": "<string>",
"code_owners": [
"<string>"
],
"code_scan_run_id": "<string>",
"created_at": 123,
"description": "<string>",
"finding_id": "<string>",
"note": "<string>",
"orchestrator_session_id": "<string>",
"pr_url": "<string>",
"recommendation": "<string>",
"reference_snippets": [
{
"commentary": "<string>",
"end_line": 123,
"file_path": "<string>",
"start_line": 123,
"code": "<string>"
}
],
"repo_name": "<string>",
"scan_id": "<string>",
"session_id": "<string>",
"severity": "critical",
"status": "open",
"title": "<string>",
"updated_at": 123,
"fix_effort": "small",
"payoff": "quick_win",
"related_finding_ids": [
"<string>"
],
"validation_artifacts": [
"<string>"
],
"validation_evidence": "<string>",
"validation_result": "confirmed",
"validation_session_id": "<string>"
}
],
"end_cursor": "<string>",
"has_next_page": false,
"total": 123
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}Permissions
Requires a service user or personal access token with theViewCodeScans permission at the organization level.
Related
- Filter by
scan_idafter a scan started with Start Code Scan reachescompleted(see List Code Scans for polling). - Launch a fix for a finding with Remediate Code Scan Finding.
- For aggregate counts of scans, findings, and remediation PRs over a time range, use Get Code Scan Metrics.
- For the end-to-end workflow, see Triggering Code Scans via the Devin API.
Authorizations
Service User credential (prefix: cog_)
Path Parameters
Organization ID (prefix: org-)
"org-abc123def456"
Query Parameters
1 <= x <= 200Filter to findings produced by this scan.
Filter to findings reported in this repository.
Filter to findings with any of these severities (critical, high, medium, low).
critical, high, medium, low Filter to findings with any of these statuses (open, dismissed, resolved).
open, dismissed, resolved Filter to findings in any of these payoff quadrants (quick_win, big_fix, easy_fix, deprioritize). Unrated findings (null fix_effort) never match.
4quick_win, big_fix, easy_fix, deprioritize Findings created at or after this unix timestamp (seconds).
Findings created at or before this unix timestamp (seconds).
Findings updated at or after this unix timestamp (seconds).
Findings updated at or before this unix timestamp (seconds).
Response
Successful Response
Show child attributes
Show child attributes
Cursor to fetch the next page, or None if this is the last page.
Whether there are more items available after this page.
Optional total count (can be omitted for performance).

