Rustine docs
API › Projects

Get a project

One project, its sites and its latest score. Handy after a scan to watch the grade move.

GEThttps://api.rustine.io/v1/projects/{project_id}

OAuth permission: scans:read · an API key has them all

Open in ClaudeOpen in ChatGPT

Path parameters

  • project_idstringrequired

    Project id.

Response

  • idstring

    Project id.

  • objectstring
  • namestring

    Project name.

  • scorenumber | null

    Score out of 100; null before the first finished scan.

  • gradestring | null

    Grade from A to F; null before the first finished scan.

    ABCDF
  • open_issuesinteger

    Open issues across the project's targets, hidden ones included.

  • pausedboolean

    Paused because the plan covers fewer projects: readable, but no scan, recheck, fix or new address.

  • last_scan_atstring | null

    End of the last finished scan of any target.

  • targetsarray of object
    • idstring

      Target id: a site (domain) or a GitHub repository of the project.

    • objectstring
    • project_idstring

      Project the target belongs to.

    • kindstring

      domain (a site) or repository.

      domainserverrepository
    • addressstring

      Hostname of a site (app.example.com) or owner/repo of a repository.

    • verifiedboolean

      Whether the workspace proved it controls this target. Without proof, issue details stay hidden and only quick scans run.

    • scorenumber | null

      Score out of 100; null before the first finished scan.

    • gradestring | null

      Grade from A to F; null before the first finished scan.

      ABCDF
    • last_scan_atstring | null

      End of the last finished scan.

    • hidden_issuesobject | null

      Unverified site: what its hidden issues amount to, counts only (never which, nor where). Null when nothing is hidden.

      • urgentinteger

        Open critical and high issues hidden until the site is verified.

      • laterinteger

        Open medium and low issues hidden until the site is verified.

Errors

Statuserror.codeWhat happens
401authentication_requiredNo key in the request. Pass it in the Authorization: Bearer rst_… header, never in the address.
401invalid_api_keyThe key or OAuth token is wrong, revoked or expired. Check it is copied in full, or create a new key.
402api_plan_requiredThe workspace is on the Free plan. The API comes with Pro, or on a 14-day trial with Solo.
402api_trial_endedSolo's 14-day trial is over. Move to Pro: your keys work again at once.
403scope_missingThe OAuth token lacks the permission this route needs (shown on its page). Reconnect the agent to grant it. An API key has every permission.
404resource_not_foundNothing with this id in the key's workspace. An object of another workspace answers the same: its existence is never revealed.
429rate_limitedToo many requests for this key (120 per minute). Wait Retry-After seconds.
500internal_errorAn error on our side, reported automatically. Retry later; give the Request-Id to support if it comes back.
503service_unavailableRustine is unavailable for a moment. Retry with the same Idempotency-Key.

↵ Enter to open, Esc to close