List forensic analyses (v1, legacy)
curl --request GET \
--url https://vcm-fyi-api.fly.dev/v1/forensics/ \
--header 'X-API-KEY: <api-key>'import requests
url = "https://vcm-fyi-api.fly.dev/v1/forensics/"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://vcm-fyi-api.fly.dev/v1/forensics/', 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://vcm-fyi-api.fly.dev/v1/forensics/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-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://vcm-fyi-api.fly.dev/v1/forensics/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-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://vcm-fyi-api.fly.dev/v1/forensics/")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://vcm-fyi-api.fly.dev/v1/forensics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pagination": {
"total_entries": 123,
"current_page": 123,
"total_pages": 123,
"next_page": "<string>"
},
"data": [
{
"id": 123,
"project_id": "<string>",
"project_name": "<string>",
"proponent": "<string>",
"registry": "<string>",
"country": "<string>",
"issued": 123,
"run_date": "2023-11-07T05:31:56Z",
"status": "<string>",
"raw_json": "<string>",
"news_entries_json": "<string>",
"num_findings": 123,
"price_narrative": "<string>",
"primary_risk": "<string>",
"value_proposition": "<string>",
"error_type": "<string>",
"error_message": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Forensics
List forensic analyses (v1, legacy)
Get a paginated list of legacy (v1) forensic analyses across all projects.
Deprecated: Prefer the /v2/latest endpoint for the normalized news feed.
Filtering: Filter by project_id, registry, country, scan status, or minimum number of findings.
Sorting: Default sort is by -run_date (most recent first). Supports any
ForensicNews field with +/- prefix.
GET
/
v1
/
forensics
/
List forensic analyses (v1, legacy)
curl --request GET \
--url https://vcm-fyi-api.fly.dev/v1/forensics/ \
--header 'X-API-KEY: <api-key>'import requests
url = "https://vcm-fyi-api.fly.dev/v1/forensics/"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://vcm-fyi-api.fly.dev/v1/forensics/', 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://vcm-fyi-api.fly.dev/v1/forensics/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-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://vcm-fyi-api.fly.dev/v1/forensics/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-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://vcm-fyi-api.fly.dev/v1/forensics/")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://vcm-fyi-api.fly.dev/v1/forensics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pagination": {
"total_entries": 123,
"current_page": 123,
"total_pages": 123,
"next_page": "<string>"
},
"data": [
{
"id": 123,
"project_id": "<string>",
"project_name": "<string>",
"proponent": "<string>",
"registry": "<string>",
"country": "<string>",
"issued": 123,
"run_date": "2023-11-07T05:31:56Z",
"status": "<string>",
"raw_json": "<string>",
"news_entries_json": "<string>",
"num_findings": 123,
"price_narrative": "<string>",
"primary_risk": "<string>",
"value_proposition": "<string>",
"error_type": "<string>",
"error_message": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Query Parameters
Filter by project ID
Filter by registry (VCS, GLD, ACR, etc.)
Filter by country
Filter by status (success, partial, failed)
Minimum number of findings
Page number
Required range:
x >= 1Items per page
Required range:
1 <= x <= 200Sorting: field_name or +field_name (asc), -field_name (desc)
Response
Paginated list of legacy forensic scan results