Get a project
One project, its sites and its latest score. Handy after a scan to watch the grade move.
OAuth permission: scans:read · an API key has them all
Path parameters
project_idstringrequiredProject id.
Response
idstringProject id.
objectstringnamestringProject name.
scorenumber | nullScore out of 100; null before the first finished scan.
gradestring | nullGrade from A to F; null before the first finished scan.
ABCDFopen_issuesintegerOpen issues across the project's targets, hidden ones included.
pausedbooleanPaused because the plan covers fewer projects: readable, but no scan, recheck, fix or new address.
last_scan_atstring | nullEnd of the last finished scan of any target.
targetsarray of objectidstringTarget id: a site (domain) or a GitHub repository of the project.
objectstringproject_idstringProject the target belongs to.
kindstringdomain(a site) orrepository.domainserverrepositoryaddressstringHostname of a site (
app.example.com) orowner/repoof a repository.verifiedbooleanWhether the workspace proved it controls this target. Without proof, issue details stay hidden and only quick scans run.
scorenumber | nullScore out of 100; null before the first finished scan.
gradestring | nullGrade from A to F; null before the first finished scan.
ABCDFlast_scan_atstring | nullEnd of the last finished scan.
hidden_issuesobject | nullUnverified site: what its hidden issues amount to, counts only (never which, nor where). Null when nothing is hidden.
urgentintegerOpen critical and high issues hidden until the site is verified.
laterintegerOpen medium and low issues hidden until the site is verified.
Errors
| Status | error.code | What happens |
|---|---|---|
| 401 | authentication_required | No key in the request. Pass it in the Authorization: Bearer rst_… header, never in the address. |
| 401 | invalid_api_key | The key or OAuth token is wrong, revoked or expired. Check it is copied in full, or create a new key. |
| 402 | api_plan_required | The workspace is on the Free plan. The API comes with Pro, or on a 14-day trial with Solo. |
| 402 | api_trial_ended | Solo's 14-day trial is over. Move to Pro: your keys work again at once. |
| 403 | scope_missing | The OAuth token lacks the permission this route needs (shown on its page). Reconnect the agent to grant it. An API key has every permission. |
| 404 | resource_not_found | Nothing with this id in the key's workspace. An object of another workspace answers the same: its existence is never revealed. |
| 429 | rate_limited | Too many requests for this key (120 per minute). Wait Retry-After seconds. |
| 500 | internal_error | An error on our side, reported automatically. Retry later; give the Request-Id to support if it comes back. |
| 503 | service_unavailable | Rustine is unavailable for a moment. Retry with the same Idempotency-Key. |