Deficiency Reports API
Query organization-scoped deficiency findings generated by validation workflows.
Reading existing reports
Reading an authorized saved report does not consume a trial or prepaid review credit and remains available after processing expiry. Saving a new usable packet report consumes one credit even when cached evidence avoids a provider call. Current organization access is still required. See trial and prepaid processing.
Deficiency Reports API
List Deficiency Reports
GET /api/v1/deficiency-reports
Query Params
utility(optional)severity(optional):critical,high,medium,lowstatus(optional alias): location statuses (exact,approximate,unresolved,pending), finding states (open,resolved,superseded) or remediation progress (open,in_progress,pending_revalidation,resolved,wont_fix)locationStatus(optional):exact,approximate,unresolved,pendingfindingState(optional):open,resolved,superseded. This is whether the deficiency is still open. Only a review closes a finding.remediationStatus(optional):open,in_progress,pending_revalidation,resolved,wont_fix. This is the applicant's progress on a fix.resolvedhere means a fix was applied, not that the finding closed.applicationId(optional uuid)documentId(optional uuid)limit(1-100, default 50)offset(default 0)
Response Shape
{
"reports": [
{
"id": "uuid",
"sessionId": "uuid",
"utility": "duke-energy",
"state": "NC",
"applicationId": "c8a43756-2e9f-4d10-a7c3-216bdd403e15",
"documentId": "uuid",
"deficiencyType": "site_control",
"description": "Lease term does not meet minimum duration",
"severity": "high",
"requirementSource": "Duke Energy NC Tariff Section 3.2",
"requirementId": "uuid",
"pageReference": 4,
"boundingBox": { "x": 120, "y": 210, "width": 180, "height": 50 },
"locationStatus": "exact",
"locationMethod": "vision_verified",
"locationConfidence": "high",
"locationReason": null,
"locationMatchedText": "Lease shall remain in effect for twenty years",
"workingSpanId": "4f2e2b15-8b6d-4a31-8fdb-2a38f5e0b222",
"workingPageHint": 4,
"workingQuote": "Lease shall remain in effect for twenty years",
"workingCharStart": 1421,
"workingCharEnd": 1472,
"workingAnchor": {
"spanId": "4f2e2b15-8b6d-4a31-8fdb-2a38f5e0b222",
"pageHint": 4,
"charStart": 1421,
"charEnd": 1472,
"quote": "Lease shall remain in effect for twenty years"
},
"sourceAnchor": {
"pageReference": 4,
"boundingBox": { "x": 120, "y": 210, "width": 180, "height": 50 },
"matchedText": "Lease shall remain in effect for twenty years",
"method": "vision_verified",
"confidence": "high",
"reason": null
},
"findingState": "open",
"remediationStatus": "open",
"createdAt": "2026-02-18T04:00:00.000Z"
}
],
"total": 1,
"limit": 50,
"offset": 0
}Access Scope
Results are scoped to the calling API key organization. A report can be returned when the caller organization is either the report owner organization or the applicant organization on the report.
Implementation note: hybrid anchors are additive fields used by the split remediation UI and API/CLI workflows; existing deficiency consumers remain backward-compatible.
sessionId, applicationId, documentId, requirementSource, and
requirementId can be null for legacy or packet-level findings that do not
carry that linkage.