AgentFit docs agentfit.dev ↗

Get an audit

GET https://agentfit.dev/api/public/audit/{id}

Retrieve the status and, once complete, the full scored report for a run started by POST /audit. Responses set Cache-Control: no-store.

Request

Parameter In Type Required Description
id path string (UUID) yes The run_id returned when the audit was started.

curl

curl -s 'https://agentfit.dev/api/public/audit/019eefa7-fdb7-77ac-8c56-ad184e44ece6' | jq '.status, .total_score'

Python

import requests

run_id = "019eefa7-fdb7-77ac-8c56-ad184e44ece6"
resp = requests.get(f"https://agentfit.dev/api/public/audit/{run_id}", timeout=10)
data = resp.json()
if data["status"] == "done":
    print(data["report"]["total_score"])

JavaScript

const runId = "019eefa7-fdb7-77ac-8c56-ad184e44ece6";
const resp = await fetch(`https://agentfit.dev/api/public/audit/${runId}`);
const data = await resp.json();
if (data.status === "done") console.log(data.report.total_score);

Response

While the audit runs, status is pending or running. When done, the report is nested under report. categories is an object keyed by category id (A_discoveryF_agent_surface), each value a {score, max} pair; criteria is an array of per-criterion results:

{
  "run_id": "019eefa7-fdb7-77ac-8c56-ad184e44ece6",
  "status": "done",
  "total_score": 71,
  "report": {
    "base_url": "https://docs.stripe.com",
    "audit_date": "2026-06-22",
    "total_score": 71,
    "max_score": 100,
    "categories": {
      "A_discovery": { "score": 11, "max": 13 },
      "F_agent_surface": { "score": 9, "max": 10 }
    },
    "criteria": [
      { "id": "A1", "status": "present", "score": 2, "max": 2, "evidence_url": "https://docs.stripe.com/llms.txt" }
    ]
  }
}

The six categories are A Discovery, B Page artifacts, C API spec, D Content, E Hygiene, F Agent Surface (see the glossary). A status of error includes a short, safe error reason.

Errors

Status code Meaning
404 not_found No run exists for that id.
422 not_done The run has not finished yet.
429 rate_limited Per-IP poll rate exceeded; see retry_after.

Deprecated: the legacy in-memory poll

Deprecated. The legacy GET /audit/{id} poll path is an in-memory fallback used only when the service runs without a database. It is not part of the versioned contract and may be removed. Always poll the durable GET /api/public/audit/{id} endpoint documented above; the legacy path is retained only for backward compatibility with old clients.