Guides
Scanning & the architecture map
A scan is what turns connected systems into an architecture graph and a prioritized risk list. This page explains what runs, what the map shows, and how confidence works.
What a scan runs
- Architecture inference — components (frontend, APIs, databases, queues, third-party services) and the flows between them.
- SAST — dataflow-based static analysis of your source, not just regex matching.
- SCA & SBOM — transitive dependency analysis and a software bill of materials, matched against known vulnerabilities (OSV.dev).
- Secret detection — verified secret findings; detected secrets are masked before storage.
Scans are asynchronous
Starting a scan returns immediately with a status. When a job queue is configured, the scan runs in the background — so poll the scan list until the status is succeeded or failed rather than assuming results are ready.
const scan = await riscly(`/projects/${projectId}/scans`, {
method: "POST",
body: "{}",
}).then((r) => r.json());
let done;
do {
await new Promise((r) => setTimeout(r, 2000));
const scans = await riscly(`/projects/${projectId}/scans`).then((r) => r.json());
done = scans.find((s) => s.id === scan.id);
} while (done.status !== "succeeded" && done.status !== "failed");Reading the architecture map
Nodes are components; edges are the data and control flows between them. Riscly merges verified nodes (from a connected collector, e.g. Vercel or Supabase) with inferred nodes (deduced from your code and dependencies) so that connecting a service after a code-only scan does not create duplicates — and nothing is dropped.
Manual corrections persist
Edits you make to the map are stored as an overlay on top of the auto-detected graph, so they survive future scans. See architecture overlay in the API reference.Confidence levels
Every finding is labelled so you know how much certainty sits behind it:
- verified — confirmed from a connected source or a reproduced signal.
- high — strong evidence from analysis, low false-positive rate.
- heuristic — inferred; worth checking before acting.
Deep AI analysis
Optionally run a deeper AI pass over the repo's source files; the additional findings are merged into the scan. This requires AI to be enabled on the server.
curl -X POST \
https://api.riscly.com/api/projects/PROJECT_ID/code/deep-scan \
-H "Authorization: Bearer $RISCLY_TOKEN" \
-H "x-org-id: $RISCLY_ORG_ID"