API reference for scans, issues, reports, and settings.
Use these examples against Shopkeeper on port 8080 or through the dashboard proxy where applicable. Endpoints are grouped by method so reads, lifecycle actions, settings updates, and deletes stay easy to scan.
GET endpoints
Read scans, issue groups, report files, health, version, and settings.
/api/scansScansNone in self-hosted v1.0.
Array of scan records with URL, status, progress, viewport, tag, and timestamps.
curl -s -X GET "http://localhost:8080/api/scans"
/api/scans/{id}ScansNone in self-hosted v1.0.
Scan record or 404.
curl -s -X GET "http://localhost:8080/api/scans/$SCAN_ID"
/api/scans/{id}/issuesIssues And ReportsNone in self-hosted v1.0.
Array of issues with occurrences.
curl -s -X GET "http://localhost:8080/api/scans/$SCAN_ID/issues"
/api/scans/{id}/issues/chunksIssues And ReportsNone in self-hosted v1.0.
Issue summaries and aggregate counts.
curl -s -X GET "http://localhost:8080/api/scans/$SCAN_ID/issues/chunks"
/api/scans/{id}/issues/detailsIssues And ReportsNone in self-hosted v1.0.
Issue summary, detail metadata, and occurrence page.
curl -s -X GET "http://localhost:8080/api/scans/$SCAN_ID/issues/details"
/api/scans/{id}/issues/report.pdfIssues And ReportsNone in self-hosted v1.0.
PDF file download.
curl -s -X GET "http://localhost:8080/api/scans/$SCAN_ID/issues/report.pdf"
/api/scans/{id}/issues/report.csvIssues And ReportsNone in self-hosted v1.0.
CSV file download.
curl -s -X GET "http://localhost:8080/api/scans/$SCAN_ID/issues/report.csv"
/api/scans/{id}/issues/report.llm.txtIssues And ReportsNone in self-hosted v1.0.
Plain text file download.
curl -s -X GET "http://localhost:8080/api/scans/$SCAN_ID/issues/report.llm.txt"
/api/healthSettings And RuntimeNone.
{ status, service }
curl -s -X GET "http://localhost:8080/api/health"
/api/versionSettings And RuntimeNone.
{ version, commit }
curl -s -X GET "http://localhost:8080/api/version"
/api/settingsSettings And RuntimeNone in self-hosted v1.0.
Grouped server settings.
curl -s -X GET "http://localhost:8080/api/settings"
POST endpoints
Create scans or trigger scan lifecycle actions.
/api/scansScansNone in self-hosted v1.0.
Created scan record.
{ sitemap_url, scan_type, tag?, viewport_preset? }curl -s -X POST "http://localhost:8080/api/scans" \
-H "Content-Type: application/json" \
--data '{ sitemap_url, scan_type, tag?, viewport_preset? }'/api/scans/{id}/retry-failedScansNone in self-hosted v1.0.
Same scan record plus retried URL count.
curl -s -X POST "http://localhost:8080/api/scans/$SCAN_ID/retry-failed"
/api/scans/{id}/rescanScansNone in self-hosted v1.0.
New scan record.
curl -s -X POST "http://localhost:8080/api/scans/$SCAN_ID/rescan"
/api/scans/{id}/pauseScansNone in self-hosted v1.0.
Updated scan record.
curl -s -X POST "http://localhost:8080/api/scans/$SCAN_ID/pause"
/api/scans/{id}/resumeScansNone in self-hosted v1.0.
Updated scan record.
curl -s -X POST "http://localhost:8080/api/scans/$SCAN_ID/resume"
PUT endpoints
Update server-wide settings.
/api/settingsSettings And RuntimeNone in self-hosted v1.0.
Updated grouped server settings.
{ reporting?, performance?, integrations? }curl -s -X PUT "http://localhost:8080/api/settings" \
-H "Content-Type: application/json" \
--data '{ reporting?, performance?, integrations? }'DELETE endpoints
Remove scan data and stored screenshots.
/api/scans/{id}ScansNone in self-hosted v1.0.
204 on success.
curl -s -X DELETE "http://localhost:8080/api/scans/$SCAN_ID"