Skip to main content
Endpoint: 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)

{
  "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

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

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

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

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#

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++

#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

<?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

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

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(())
}