Domain Summary
Retrieve a dashboard summary for a domain, optimized for fast page load.
/api/domain/{domain_name}/summaryBearer <token>API key authentication — use your Cyborux API key as a Bearer token.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
domain_name | string | The domain name (e.g. example.com). |
Response
{
"domain": "example.com",
"last_analyzed": "2026-03-08T14:22:00Z",
"status": "completed",
"counts": {
"emails": 134,
"people": 18,
"files": 9,
"subdomains": 47,
"usernames": 22,
"related_domains": 5
},
"security_metrics": {
"spoofable_emails": 12,
"leaked_emails": 27,
"active_subdomains": 38,
"takeover_vulnerable": 2,
"passwords_exposed": 5,
"people_with_emails": 15,
"people_in_files": 3,
"critical_vulnerabilities": 1,
"high_vulnerabilities": 4,
"email_auth": {
"schema_version": 1,
"spoofing_protection": "partial",
"reasons": [
"DMARC policy is 'quarantine' — spoofed mail is delivered to spam, not rejected",
"SPF uses soft fail (~all) instead of hard fail (-all)"
],
"dmarc": {
"policy": "quarantine",
"pct": 100,
"raw_record": "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com",
"checked_at": "2026-04-26T12:34:56+00:00"
},
"spf": {
"qualifier": "~all",
"policy": "soft_fail",
"raw_record": "v=spf1 include:_spf.google.com ~all",
"checked_at": "2026-04-26T12:34:56+00:00"
}
},
"breach_analytics": {
"total_breaches": 27,
"affected_emails": 18,
"recent_affected_emails": 5,
"total_emails": 134,
"recent_pct": 64,
"recent_window_years": 2,
"yearly_counts": [
{ "year": 2017, "count": 0 },
{ "year": 2018, "count": 1 },
{ "year": 2019, "count": 2 },
{ "year": 2020, "count": 3 },
{ "year": 2021, "count": 5 },
{ "year": 2022, "count": 4 },
{ "year": 2023, "count": 6 },
{ "year": 2024, "count": 7 },
{ "year": 2025, "count": 5 },
{ "year": 2026, "count": 1 }
],
"latest_breaches": [
{
"name": "LinkedIn",
"title": "LinkedIn (2021)",
"breach_date": "2021-06-22",
"affected_count": 23,
"pwn_count": 700000000
}
]
},
"login_pages_count": 3,
"usernames_in_files": 8,
"avg_services_emails": 4.2,
"avg_services_usernames": 2.1,
"posture": {
"email-auth": "watch",
"vulnerability": "at-risk",
"credential-exposure": "watch",
"attack-surface": "watch",
"shadow-it": "good",
"high-profile": "at-risk",
"crypto-dns": "good"
}
},
"risk_score": 67,
"risk_level": "high",
"tls_grade": "A",
"tls_scanned": true,
"highlights": {
"most_exposed_people": [],
"interesting_subdomains": [],
"interesting_files": []
},
"domain_info": {
"registrar": "GoDaddy",
"creation_date": "2010-05-15",
"expiration_date": "2027-05-15",
"whois_data": { "...": "raw WHOIS record (registrar fields, registrant, etc.)" },
"dns_records": { "ns": ["ns1.example.com", "ns2.example.com"], "...": "..." }
},
"is_fully_analyzed": true,
"analysis_progress": null,
"tech_summary": {
"categories": [
{ "name": "Web servers", "count": 3 },
{ "name": "JavaScript frameworks", "count": 5 }
],
"total": 12
},
"organization_name": "Example Corp"
}| Status | Detail |
|---|---|
401 | Not authenticated. |
403 | Forbidden — you do not have access to this domain. |
404 | Domain not found. |
{
"detail": "Not authenticated."
}Response Fields
domainstringThe domain name.
last_analyzedstring | nullISO 8601 timestamp of when the authenticated user last submitted this domain for analysis. Each user sees their own analysis date, not a global timestamp.
statusstringAnalysis status: pending, processing, or completed.
countsobjectTotal entity counts: emails, people, files, subdomains, usernames, related_domains.
security_metricsobjectSecurity indicators including spoofable_emails, leaked_emails, active_subdomains, takeover_vulnerable, passwords_exposed, people_with_emails, people_in_files, critical_vulnerabilities, high_vulnerabilities, login_pages_count, usernames_in_files, avg_services_emails, avg_services_usernames, email_auth, breach_analytics, and posture.
posture is the External Posture index — a qualitative per-topic map keyed by stable topic id. Each value is one of good, watch, at-risk, or not-assessed. Topics are derived from existing aggregates and mapped to NIS2 Article 21 and CIS Controls v8 references:
email-auth— DMARC + SPF posture (NIS2 21(2)(h), CIS C9).vulnerability— known CVEs on detected subdomain tech (NIS2 21(2)(e), CIS C7).not-assesseduntildetect_subdomain_technologieshas run.credential-exposure— breached emails / exposed passwords / recent breach activity (NIS2 21(2)(j), CIS C5).attack-surface— public surface size relative to the requesting user's reported organisation size; flags internal subdomains with login pages (NIS2 21(2)(a), CIS C1).shadow-it— third-party SaaS sprawl inferred fromavg_services_emails(NIS2 21(2)(f), CIS C2).not-assesseduntilfind_registered_sites_priorityhas run.high-profile— privileged / executive people with breached linked emails (NIS2 21(2)(g), CIS C14).crypto-dns— TLS grade plus DNSSEC and registrar-lock signals from WHOIS (NIS2 21(2)(h), ENS mp.com.*).
The index reflects only what is externally observable via OSINT. It is not a NIS2 / ENS compliance audit and does not measure internal controls.
email_auth is the structured email-authentication posture (DMARC + SPF) for the domain's canonical email zone. null until the spoofability check has run. When present:
spoofing_protection: tri-state —protected(DMARCp=rejectenforced + SPF-all),partial(some controls in place but enforcement is incomplete),spoofable(DMARCp=none/missing with weak SPF), orunknown(not yet computed).reasons: human-readable strings explaining each detected weakness; empty when fully protected.dmarc: parsed DMARC policy (reject/quarantine/none/missing),pctpercentage, the raw_dmarc.<domain>TXT record, andchecked_attimestamp.spf: parsed SPF policy (hard_fail/soft_fail/neutral/permissive/missing), theall-mechanism qualifier, the raw apex TXT record, andchecked_attimestamp.
breach_analytics is the aggregated third-party breach exposure across the domain's discovered emails. Always present (never null); a domain with no breach signals yet returns all counts at zero. Fields:
total_breaches(number): distinct breaches affecting any of the domain's emails.affected_emails(number): distinct emails with at least one breach link (any time).recent_affected_emails(number): distinct emails affected by breaches whosebreach_datefalls inside the recent window (recent_window_years).total_emails(number): total emails discovered for the domain.recent_pct(number, 0–100): share oftotal_breacheswhosebreach_datefalls inside the lastrecent_window_years.recent_window_years(number): width of the recent window in years (default2).yearly_counts(array of{ year, count }): distinct breaches per year for the timeline window (default last 10 calendar years ending in the current year), ascending by year. The series is densified server-side — every year in the window appears withcount: 0if no breaches landed that year, so the frontend sparkline draws a continuous line.latest_breaches(array, max 3): most recent breaches bybreach_date(descending; rows with anullbreach_datesink to the bottom). Each entry:{ name, title, breach_date, affected_count, pwn_count }.
risk_scorenumber | nullAggregated risk score from 0 to 100. null if not yet calculated.
risk_levelstring | nullRisk classification: info, low, medium, high, or critical. null if not yet calculated.
tls_gradestring | nullTLS/SSL security grade (A+, A, A-, B, C, D, E, F, T, M). null when not yet scanned, when HTTPS is not available, or when the TLS scanner could not complete the assessment. Use tls_scanned to check whether a scan was attempted.
tls_scannedbooleanWhether a TLS assessment has been attempted. A null grade with tls_scanned: true indicates the domain either does not serve HTTPS or the scanner could not complete the assessment.
highlightsobjectDashboard highlights: most_exposed_people (excludes people with unlikely affiliation), interesting_subdomains, interesting_files.
domain_infoobjectWHOIS and DNS data. Top-level keys: registrar, creation_date, expiration_date (extracted from whois_data for quick access), plus the full raw whois_data and dns_records objects for clients that need every record type (NS, MX, TXT, SPF, DMARC, DNSSEC flags, etc.). Any field that is absent in the upstream WHOIS / DNS response is null.
is_fully_analyzedbooleanWhether all analysis phases (including deep enrichment) have completed.
analysis_progressobject | nullProgress indicator with phase and percentage. Only present when status is processing.
tech_summaryobject | nullTechnology stack summary with categories (name + count + percentage).
organization_namestring | nullOrganization name provided when the domain was first analyzed.
curl -X GET https://api.cyborux.com/api/domain/example.com/summary \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch(
"https://api.cyborux.com/api/domain/example.com/summary",
{ headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);
const data = await res.json();import requests
response = requests.get(
"https://api.cyborux.com/api/domain/example.com/summary",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = response.json()