GET /api/v1/guard/results
Use this to build dashboards and analytics. Results can be filtered by project_id
or by a specific scan_id
if your integration stores the ID returned by /guard
(when enabled).
Query parameters
project_id
(optional) — return scans for this project.scan_id
(optional) — return details for a specific scan (if available).- Pagination parameters (optional) —
page
,per_page
.
Example response (shape)
Copy
{
"data": [
{
"id": "scan_01HXXX...",
"created_at": "2025-09-20T16:10:00Z",
"flagged": true,
"summary": { "matches": 1, "detectors": ["LLM03"] }
}
],
"meta": { "page": 1, "per_page": 25, "total": 1 }
}
Examples
Python
Copy
import requests
BASE = "https://sagexai.com"
TOKEN = "<YOUR_TOKEN>"
params = {"project_id": "demo", "per_page": 25}
r = requests.get(f"{BASE}/api/v1/guard/results", headers={
"Authorization": f"Bearer {TOKEN}"
}, params=params, timeout=30)
print(r.status_code, r.json())
JavaScript
Copy
const BASE = "https://sagexai.com";
const TOKEN = "<YOUR_TOKEN>";
const url = new URL(`${BASE}/api/v1/guard/results`);
url.searchParams.set("project_id", "demo");
url.searchParams.set("per_page", "25");
const res = await fetch(url, { headers: { "Authorization": `Bearer ${TOKEN}` } });
console.log(res.status, await res.json());
TypeScript
Copy
const BASE = "https://sagexai.com";
const TOKEN = "<YOUR_TOKEN>";
const url = new URL(`${BASE}/api/v1/guard/results`);
url.searchParams.set("project_id", "demo");
url.searchParams.set("per_page", "25");
const res = await fetch(url, { headers: { "Authorization": `Bearer ${TOKEN}` } });
console.log(res.status, await res.json());
Java
Copy
import java.net.http.*;
import java.net.URI;
public class ResultsExample {
public static void main(String[] args) throws Exception {
String BASE = "https://sagexai.com";
String TOKEN = "<YOUR_TOKEN>";
String url = BASE + "/api/v1/guard/results";
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder(URI.create(url))
.header("Authorization", "Bearer " + TOKEN)
.GET().build();
HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode());
System.out.println(res.body());
}
}
C#
Copy
using System;
using System.Net.Http;
using System.Net.Http.Headers;
var BASE = "https://sagexai.com";
var TOKEN = "<YOUR_TOKEN>";
var url = $"{BASE}/api/v1/guard/results";
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", TOKEN);
var resp = await client.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
C++
Copy
#include <curl/curl.h>
#include <iostream>
int main() {
CURL* curl = curl_easy_init();
if(!curl) return 1;
const char* BASE = "https://sagexai.com";
const char* TOKEN = "<YOUR_TOKEN>";
std::string url = std::string(BASE) + "/api/v1/guard/results";
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, ("Authorization: Bearer " + std::string(TOKEN)).c_str());
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) std::cerr << "curl error: " << curl_easy_strerror(res) << "\n";
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
return 0;
}
PHP
Copy
<?php
$BASE = "https://sagexai.com";
$TOKEN = "<YOUR_TOKEN>";
$url = "$BASE/api/v1/guard/results";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer $TOKEN"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $code . PHP_EOL . $response;
Go
Copy
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
base := "https://sagexai.com";
token := "<YOUR_TOKEN>";
url := base + "/api/v1/guard/results";
req, _ := http.NewRequest("GET", url, nil);
req.Header.Set("Authorization", "Bearer "+token);
client := &http.Client{ Timeout: 15 * time.Second };
resp, err := client.Do(req);
if (err != nil) { panic(err) }
defer resp.Body.Close();
fmt.Println("Status:", resp.Status);
}
Rust
Copy
use reqwest::blocking::Client;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let base = "https://sagexai.com";
let token = "<YOUR_TOKEN>";
let url = format!("{}/api/v1/guard/results", base);
let res = Client::new()
.get(url)
.bearer_auth(token)
.send()?;
println!("Status: {}", res.status());
println!("{}", res.text()?);
Ok(())
}