status is Completed. About 3 minutes later its automatic report starts generating when the assessment has data for it, and you track the report from there.
Availability: Attack Surface Reports or Targeted Attack Surface Reports. Either one opens the list, progress and queue, for full and targeted assessments alike.
Cost: no metered allowance. Each poll is one API call: it counts toward your per-second rate limit and, with an API key, toward your monthly API Calls allowance when it returns 2xx. Without either plan feature, or when your license is not in force, these endpoints return 403 with {"detail": "This feature is not included in your plan."}.
Assessment statuses
Completed, Cancelled and Failed are final.
Poll progress
GET /api/hackerview/scans/{scan_id}/progress/ returns the status, every phase, a summary and the queue state. Pass the uid from the start response as scan_id.
status— the assessment status. It readsRunningwhile any module is still running, even after the assessment list already showsCompleted. Wait forCompletedhere before you request a report yourself.elapsed_seconds— seconds since the assessment was created, queue time included. It keeps counting after the assessment ends. For the run time of a finished assessment, readelapsed_time_secondsfrom the list.phases— one entry per phase, in the order below.summary— counts for a progress bar.total_domains_foundis the hosts discovered so far andlookups_completedthe hosts resolved to an IP address. Themodules_*counts cover every phase, source and module, the always-on checks included.lookups_failedis always0.queue— the same block the queue endpoint returns.
status is Completed, Cancelled or Failed.
Phases
Each phase hasname, status, started_at, completed_at and duration_seconds. A phase that collects from several sources adds modules, one entry per source, with total_results, modules_completed and modules_total. A skipped phase adds reason. Phase and module statuses are pending, running, completed, failed or skipped. A failed module adds error.
Modules such as look-alike domains, employee emails and the always-on checks run alongside these phases. Follow them in the
modules list of domain_enrichment and in the summary counts.
Read the queue
Your organization runs one assessment at a time. While it runs, further starts wait asQueued, up to 10 open assessments. The platform also caps how many assessments run at once across all organizations. When a slot opens, queued assessments start in fair-share order: one from each waiting organization in turn, oldest first within each organization. A Finalizing assessment does not hold your slot, so your next queued one can start while it finishes.
GET /api/hackerview/scans/{scan_id}/queue/ returns the queue state on its own. Progress already includes it under queue, so you need this call only when you want nothing else.
waiting—truewhile the assessment isQueued.queue_position— the assessment’s place in the platform-wide fair-share order, starting at 1.nullunless the assessment isQueued.queue_length— queued assessments across the platform.queue_reason—org_concurrency_limitwhen your organization already has one running,global_capacitywhen the platform is full.deploy_interruptedon aFailedassessment.nullotherwise.max_concurrent_scansandglobal_running— how many assessments the platform runs at once, and how many are running now.dispatch_policy— alwaysfair_share.
List assessments
GET /api/hackerview/scans/ returns your organization’s assessments, newest first, including the ones started in the dashboard.
Page by raising
page until next is null. The next and previous URLs point at the internal assessment service, not at client-api.leak.center, so don’t call them.
domain— the domain assessed. Withswap_to_primaryit can differ from the one you sent, which is then inoriginal_domain.scan_domains— the domains the assessment covers, when domain detection ran.ip— the IP address the domain resolved to.completed_atandelapsed_time_seconds— when the assessment ended, and its run time in seconds from creation. Both arenullwhile it runs, and staynullfor aCancelledassessment.servers_with_unusual_ports_countandservers_with_vulns_count— hosts with unusual open ports and hosts with known vulnerabilities, counted when the assessment finishes.email_domain_info— what domain detection found about the organization’s email domains.params— the options the assessment was started with. This example is shortened:paramsholds every module flag,domain_modeand the report options.active_scope_namespacesis the final active scope.
auto_generate_report set to false and its report_type as the only entry of auto_report_types. A full assessment has auto_generate_report set to true and an empty auto_report_types.
How long it takes
Time depends on the modules, the domain mode and the size of the domain. With every module flag off, an assessment typically takes 5 to 15 minutes. With every module on anddomain_mode set to all, plan for 2 to 4 hours. These modules take longest:
Queue time comes on top. Every assessment ends, whatever happens:
- No progress for 60 minutes: discovery stops, and the assessment finishes with the results found so far. The limit is 120 minutes with
dual_domain, or withallwhen it covers more than one domain. - 4 hours after it was created: a
Runningassessment stops discovery and finishes with what it has. The limit is 8 hours withdual_domain, or withallwhen it covers more than one domain. - 4 hours in
Finalizing: the assessment is set toCompleted, and the modules still running are markedfailed.
Completed, and its report covers what was found.
Errors
Handle API errors covers each status in more detail.