Developers

REST API

Run scans from a deployment pipeline, a scheduler or your own dashboard. Every scan follows the same rules as in the browser: verified domains only, one credit per scan.

Authentication

Create a key on your account page and send it in the Authorization header. A key acts as your account on the /api/ endpoints only; revoke it there at any time.

Request
curl https://domain-security-scanner.64.226.71.191.sslip.io/api/me \
  -H "Authorization: Bearer dss_your_key"

Start a scan

The target is a domain verified on your account, or any of its subdomains. The answer arrives at once with the scan id; the scan takes about a minute.

Request
curl -X POST https://domain-security-scanner.64.226.71.191.sslip.io/api/scans \
  -H "Authorization: Bearer dss_your_key" \
  -H "Content-Type: application/json" \
  -d '{"target": "www.example.com"}'
Response · 202
{"scan_id": "3f1c…", "target": "www.example.com", "status": "queued", "tier": "full"}

Read the result

Poll the scan until status is completed (or failed, which refunds the credit). The completed report holds the score, the grade, the category scores, the action plan and every finding with its evidence.

Request
curl https://domain-security-scanner.64.226.71.191.sslip.io/api/scans/SCAN_ID \
  -H "Authorization: Bearer dss_your_key"
Response (shortened)
{
  "status": "completed",
  "assessment": {"score": 78, "grade": "C", "counts": {"high": 1, "medium": 3, …}, …},
  "findings": [{"severity": "high", "title": "…", "evidence": "…", "recommendation": "…"}, …]
}
PDF report
curl -o report.pdf https://domain-security-scanner.64.226.71.191.sslip.io/api/scans/SCAN_ID/report.pdf \
  -H "Authorization: Bearer dss_your_key"

All endpoints

Method and pathWhat it does
GET /api/meAccount e-mail and credit balance.
GET /api/domainsYour domains with their verification state and the DNS record or file that verifies them.
POST /api/domainsAdd a domain: {"hostname": "example.com"}.
POST /api/domains/{id}/verifyCheck the DNS record or file and mark the domain verified.
POST /api/scansStart a scan: {"target": "example.com"}. Uses one credit.
GET /api/scansYour recent scans.
GET /api/scans/{id}Status, score and findings of a scan.
GET /api/scans/{id}/report.pdfThe completed report as a PDF document.
POST /api/scans/{id}/unlockTurn a limited report into the full one. Uses one paid credit.
GET /api/alertsOpen monitoring alerts for your domains.

Machine-readable description: /api/openapi.json (OpenAPI 3).

Errors

Errors answer with a JSON body {"detail": "…"} that says what to do.

StatusMeaning
401Missing, revoked or wrong API key.
402No credit left for the scan or the unlock.
403The target is not covered by a verified domain, or the e-mail address is not confirmed yet.
404The scan or domain does not exist on your account.
409The domain could not be verified, or the report is not complete yet.
422The target resolves to a private or reserved network address.
429Another scan of yours is running, or a rate limit was reached.