curl --request GET \
--url https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id} \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}"
headers = {"api_key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_key: '<api-key>'}};
fetch('https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}', 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://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("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://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"run_id": "6886b8d390dc7e2f4a2c91b3",
"app_id": "6820f3a4e7b91d003c45a1f2",
"workspace_id": "67f2c8e01a3b5d004e92d7a1",
"created_date": "2026-07-26T14:32:17Z",
"coverage": {
"rls": "completed",
"hardcoded_secrets": "completed",
"backend_functions": "completed",
"dependency_vulnerabilities": "completed",
"static_code": "completed"
},
"rls_recommendations": [
{
"entity_name": "Invoices",
"description": "Restrict reads to records owned by the authenticated app member."
}
],
"hardcoded_secrets": [
{
"file_path": "src/lib/payments.ts",
"description": "Potential hardcoded secret detected."
}
],
"backend_functions": [
{
"file_path": "functions/exportInvoices.ts",
"issue_description": "The function does not verify an authenticated app member before exporting data."
}
],
"dependency_vulnerabilities": [
{
"package_name": "example-parser",
"current_version": "2.4.0",
"fixed_version": "2.4.3",
"vulnerability_id": "CVE-2026-12345",
"severity": "high",
"summary": "Malformed input can cause excessive resource consumption."
}
],
"static_code_findings": [
{
"title": "Unvalidated redirect target",
"severity": "medium",
"confidence": "high",
"category": "open_redirect",
"file_path": "src/pages/Login.tsx",
"line": 48,
"impact": "An attacker could redirect a person to an untrusted site.",
"recommendation": "Allow only application-owned redirect destinations.",
"standards": [
{
"framework": "CWE",
"id": "601",
"name": "URL Redirection to Untrusted Site"
}
]
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Get security scan findings
Returns the sanitized findings and section coverage for one security scan referenced by an app.security.check_run audit event. See Security scan findings for the retrieval flow and how to interpret coverage.
curl --request GET \
--url https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id} \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}"
headers = {"api_key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_key: '<api-key>'}};
fetch('https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}', 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://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("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://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/v1/audit-logs/{workspace_id}/security-scan-runs/{run_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"run_id": "6886b8d390dc7e2f4a2c91b3",
"app_id": "6820f3a4e7b91d003c45a1f2",
"workspace_id": "67f2c8e01a3b5d004e92d7a1",
"created_date": "2026-07-26T14:32:17Z",
"coverage": {
"rls": "completed",
"hardcoded_secrets": "completed",
"backend_functions": "completed",
"dependency_vulnerabilities": "completed",
"static_code": "completed"
},
"rls_recommendations": [
{
"entity_name": "Invoices",
"description": "Restrict reads to records owned by the authenticated app member."
}
],
"hardcoded_secrets": [
{
"file_path": "src/lib/payments.ts",
"description": "Potential hardcoded secret detected."
}
],
"backend_functions": [
{
"file_path": "functions/exportInvoices.ts",
"issue_description": "The function does not verify an authenticated app member before exporting data."
}
],
"dependency_vulnerabilities": [
{
"package_name": "example-parser",
"current_version": "2.4.0",
"fixed_version": "2.4.3",
"vulnerability_id": "CVE-2026-12345",
"severity": "high",
"summary": "Malformed input can cause excessive resource consumption."
}
],
"static_code_findings": [
{
"title": "Unvalidated redirect target",
"severity": "medium",
"confidence": "high",
"category": "open_redirect",
"file_path": "src/pages/Login.tsx",
"line": 48,
"impact": "An attacker could redirect a person to an untrusted site.",
"recommendation": "Allow only application-owned redirect destinations.",
"standards": [
{
"framework": "CWE",
"id": "601",
"name": "URL Redirection to Untrusted Site"
}
]
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API key for authentication. See the Authentication page for your API for details on how to get your key.
Path Parameters
Security scan run ID from the run_id field of an app.security.check_run audit event.
Response
Successful Response
Identifier of the security scan run.
"6886b8d390dc7e2f4a2c91b3"
App the scan ran against.
"6820f3a4e7b91d003c45a1f2"
Workspace that owns the run.
"67f2c8e01a3b5d004e92d7a1"
When the scan ran, in YYYY-MM-DDTHH:MM:SSZ format (UTC).
"2026-07-26T14:32:17Z"
Per-section outcome. A section's empty findings array is a clean result only when its coverage is completed.
Show child attributes
Show child attributes
Row-level security recommendations. Unscored.
Show child attributes
Show child attributes
Hardcoded-secret findings. Unscored; secret values are never returned.
Show child attributes
Show child attributes
Backend-function authorization issues. Unscored.
Show child attributes
Show child attributes
Dependency vulnerabilities. May carry a scanner-provided severity.
Show child attributes
Show child attributes
Static code analysis findings. May carry a scanner-provided severity.
Show child attributes
Show child attributes
Was this page helpful?