- The index lists the report’s sections and datasets.
- A section returns one part of the report, such as the credential exposure module or the security scorecard.
- A dataset returns one evidence table as columns and rows, the same table the PDF bundle ships as a CSV file.
completed status: automatic or generated, PDF or JSON format. The one exception is the dataset endpoint on a Domain Spoofing Risk Report. See Pull a dataset. You need the report’s uid, which Generate and download assessment reports shows how to find.
Availability and cost
Availability: Attack Surface Reports or Targeted Attack Surface Reports, included in every edition. Either feature opens every endpoint on this page. Cost: no metered allowance. Reading report data uses none of your Attack Surface allowances. With an API key, each call that returns2xx counts once toward your monthly API Calls allowance. Any other status is refunded. See Rate limits.
Without either feature, every call on this page returns 403 with {"detail": "This feature is not included in your plan."}. A lapsed license returns the same message here. These endpoints never return the allowance 429 or a capacity 409. See Plans and quotas.
Discover what a report holds
GET /api/hackerview/reports/{report_uid}/data/ returns the report’s top-level sections and its datasets.
sectionshas one entry per top-level key.typeisdictfor an object, with its keys inkeys, orlistfor an array, with its length incount. A plain value shows its type, such asstrorint. Keys whose value isnullare left out.datasetsnames the evidence tables the report produced. It can include tables that the dataset endpoint does not serve, such asrisky_ports,credential_exposure_summaryor theemails_tables. Those exist only as CSV files in the ZIP of a PDF-format report.
Sections of the full report
The Full Attack Surface Report, and the risk reports built on it, hold these top-level sections:
The Domain Spoofing Risk Report, the three activity reports and the Change Comparison have their own layouts. The Domain Spoofing Risk Report holds sections such as
spoofguard, phishing_exposure, risk and exclusions_applied. Activity and Change Comparison reports hold sections such as summary, adapters, source_coverage and exclusions_applied, with period on activity reports and reference_period, current_scan and baseline_scan on comparisons. Read the index of each report to see what it holds.
Read a section
GET /api/hackerview/reports/{report_uid}/data/{section}/ returns one section. Use a dot path to reach a key inside it, such as modules.credential_exposure or analysis.tech_stack.
dataholds the value at that path, in the same shape as in the report JSON.- Dot paths step through object keys only. You can’t index into a list, so
servers.0returns404. Readserversand pick the item yourself. - A section comes back whole. There is no paging, so a large section such as
serversarrives in one response. meta.languageis the language the report was built in. The Domain Spoofing, activity and comparison reports keep it inlanguage.
Pull a dataset
GET /api/hackerview/reports/{report_uid}/data/datasets/{name}/ returns one evidence table as JSON.
columnslists the column names in order. Each row is an object keyed by those names.countis the number of rows. All rows come back in one response.- Values in the full report and the risk reports are strings, exactly as in the CSV file, numbers included. Activity and comparison reports return their values with their JSON types.
A report holds only the datasets its modules produced. Check
datasets in the index first. A name outside the list returns 400. A name on the list that this report does not hold returns 404.
On a Domain Spoofing Risk Report, the dataset endpoint does not serve the tables its index lists:
typosquatting and phishing_unattributed_audit return 404, and phishing_exposure returns 400. Read the same data with the section endpoint: spoofguard for the look-alike domains, phishing_listings and phishing_exposure for the phishing listings. A PDF-format report also ships them as CSV files in its ZIP.What a report left out
exclusions_applied counts what your exclusion rules removed when the report was built. Read it with the section endpoint:
0 when nothing was removed:
Activity and Change Comparison reports use another shape:
total removed, by_rule and by_adapter breakdowns, rules_loaded, and rules_hash, a fingerprint of the rules that applied. Two reports with the same rules_hash were built with the same rules.
The counters give totals per kind of rule, not per rule. Rules apply when a report is built, so after you change them, generate the report again and read the new report.