Snyk shut down the securityheaders.com API in 2026. MySSL gives you the same A+→F grade over a free JSON API — change one line and your CI keeps working.
- GET https://api.securityheaders.com/?q=example.com + GET https://myssl.info/headers/check?q=example.com
Same grade scale (A+→F) and the same "Grade capped at A" behaviour for an 'unsafe-inline'/'unsafe-eval' CSP. Compatible JSON (summary.grade, summary.headers, score, testsPassed/Failed, rawHeaders) plus the cap signal, warnings and upcoming-headers list. Try it:
/headers/check?q=github.com.
New here? See the full securityheaders.com API migration guide →
The JSON mirrors the securityheaders.com report — grade, the cap reason, present/missing/upcoming headers, warnings and the raw response headers:
{
"grade": "A",
"score": 90,
"gradeCapped": true,
"gradeCapReason": "Grade capped at A because the Content-Security-Policy
contains 'unsafe-inline' and 'unsafe-eval' in the
script-src directive...",
"warnings": [
"Content-Security-Policy contains 'unsafe-inline' in the script-src ...",
"Content-Security-Policy contains 'unsafe-eval' in the script-src ..."
],
"headersPresent": ["Strict-Transport-Security", "Content-Security-Policy",
"X-Frame-Options", "X-Content-Type-Options",
"Referrer-Policy", "Permissions-Policy"],
"headersMissing": [],
"upcomingHeaders": [
{"header": "Cross-Origin-Embedder-Policy", "present": false, "description": "..."},
{"header": "Cross-Origin-Opener-Policy", "present": false, "description": "..."},
{"header": "Cross-Origin-Resource-Policy", "present": false, "description": "..."}
],
"summary": { "grade": "A", "site": "myssl.info", "headers": { ... } },
"rawHeaders": { "Strict-Transport-Security": "max-age=31536000; ...", ... },
"myssl": { "deeper_score": 93, "advanced": [...], "https_redirect": true }
}
The grade is also returned in the X-Grade response header (and X-Grade-Capped when capped). The myssl block adds our deeper analysis (HTTPS-redirect, cookies, mixed content, security.txt) that the old API never offered — it does not change the headline grade.
curl "https://myssl.info/headers/check?q=example.com"
- run: |
G=$(curl -s "https://myssl.info/headers/check?q=${{ env.SITE }}" | jq -r .grade)
echo "Grade: $G"; case "$G" in A+|A|B) ;; *) exit 1;; esac
Deprecation/Sunset headers so headless CI gets warned.The anonymous endpoint is rate-limited for occasional checks. For CI volume, scheduled monitoring and grade-drop alerts, create a free account.
We're new and growing — your feedback helps us improve.