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_discovery …
F_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 durableGET /api/public/audit/{id}endpoint documented above; the legacy path is retained only for backward compatibility with old clients.