API reference

Scans

Scans run analysis over a project's connected systems and produce an architecture graph, findings and a posture score.

Start a scan

POST/api/projects/{projectId}/scans

Returns the new scan with a status. When a queue is configured the status is queued/running — poll the list until it settles.

curl -X POST https://api.riscly.com/api/projects/PROJECT_ID/scans \
  -H "Authorization: Bearer $RISCLY_TOKEN" \
  -H "x-org-id: $RISCLY_ORG_ID" \
  -H "Content-Type: application/json" -d '{}'

List scans

GET/api/projects/{projectId}/scans
[
  {
    "id": "scn_1",
    "status": "succeeded",
    "reliabilityScore": 82,
    "graph": { "nodes": [], "edges": [] },
    "createdAt": "2026-06-29T10:00:00.000Z"
  }
]

Polling

See the scanning guide for a ready-made poll-until-done loop.

Fan out to multiple repos

Turn extra selected repositories into their own projects during onboarding.

POST/api/projects/{projectId}/scans/fan-out
FieldTypeDescription
reposrequiredstring[]Repository identifiers to create projects for.

Chat over a scan

Grounded AI chat about the project's latest scan.

POST/api/projects/{projectId}/scans/chat
const { reply } = await riscly(
  `/projects/${projectId}/scans/chat`,
  {
    method: "POST",
    body: JSON.stringify({
      messages: [{ role: "user", content: "What is my biggest risk?" }],
    }),
  },
).then((r) => r.json());

Predict failures

POST/api/projects/{projectId}/scans/predict

Model-driven predictions over the latest scan; tier depends on plan.