Saltar al contenido principal
Version: Next 🚧

Submitting Scans

The Scan API accepts scan requests via a single, unified endpoint. Specify the target, scan engine, and optional configuration — the platform handles queuing, execution, result collection, and notifications.

Architecture

Scans are processed asynchronously via Kafka:

POST /scans → Kafka → Scan Engine → Results → Webhook/Polling

When you submit a scan, it's immediately queued and returns a scan ID. The scanner picks it up, executes it, and publishes results. You can poll the status or configure webhooks for real-time updates.

Create a Scan

Endpoint

POST /api/v1/scans

Required scope: scans:create

Request

curl -X POST https://api.cert-ix.com/scan-api/api/v1/scans \
-H "X-API-Key: $CERTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "example.com",
"scanType": "nmap",
"name": "Weekly network audit",
"targetType": "domain",
"priority": "normal",
"options": {
"ports": "1-1024",
"timing": "T3"
},
"tags": ["production", "weekly"],
"timeout": 3600
}'

Request Parameters

FieldTypeRequiredDescription
targetstringYesScan target (URL, host, domain, IP, or CIDR)
scanTypestringYesScan engine to use (see engine reference below)
namestringNoHuman-readable scan name
targetTypestringNoTarget classification: host, url, domain, ip, network
prioritystringNoExecution priority: critical, high, normal, low (default: normal)
optionsobjectNoEngine-specific scan options
configobjectNoEngine-specific configuration overrides
tagsstring[]NoCustom tags for organization and filtering
timeoutintegerNoMax scan duration in seconds
assetIdstringNoLink scan to a registered asset in Asset Management
callbackUrlstringNoHTTPS URL for one-off completion callback

Response (201 Created)

{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"scanType": "nmap",
"name": "Weekly network audit",
"target": "example.com",
"status": "queued",
"priority": "normal",
"progress": 0,
"tags": ["production", "weekly"],
"createdAt": "2026-03-06T10:00:00Z"
}
}

Scan Engine Reference

Nmap — Network Discovery

Type: nmap · Category: Network · Targets: host, ip, network, domain

Performs host discovery, port scanning, service detection, and OS identification. Ideal for network infrastructure assessments.

{
"target": "192.168.1.0/24",
"scanType": "nmap",
"options": {
"ports": "1-65535",
"timing": "T4",
"serviceDetection": true,
"osDetection": true,
"scriptScan": true,
"scripts": ["vuln", "safe"]
}
}
OptionTypeDefaultDescription
portsstring1-1024Port range (e.g., 22,80,443, 1-1024, 1-65535)
timingstringT3Timing template: T0 (paranoid) to T5 (insane)
serviceDetectionbooleantrueEnable service/version detection (-sV)
osDetectionbooleanfalseEnable OS identification (-O)
scriptScanbooleanfalseEnable NSE script scanning
scriptsstring[][]NSE script categories to run
udpScanbooleanfalseInclude UDP scanning (-sU)
topPortsintegerScan only top N most common ports

ZAP — Web Application Security

Type: zap · Category: Web App · Targets: url

OWASP ZAP performs Dynamic Application Security Testing (DAST). It spiders the target web application and tests for OWASP Top 10 vulnerabilities including XSS, SQL injection, CSRF, and more.

{
"target": "https://app.example.com",
"scanType": "zap",
"options": {
"scanPolicy": "full",
"spiderMaxDepth": 5,
"ajaxSpider": true,
"activeScan": true,
"contextInclude": ["https://app.example.com/.*"],
"contextExclude": ["https://app.example.com/logout"]
}
}
OptionTypeDefaultDescription
scanPolicystringstandardScan intensity: light, standard, full
spiderMaxDepthinteger3Maximum spidering depth
ajaxSpiderbooleanfalseEnable AJAX/JavaScript spider
activeScanbooleantruePerform active vulnerability testing
contextIncludestring[][]Regex URL patterns to include in scope
contextExcludestring[][]Regex URL patterns to exclude from scope
authenticationobjectAuthentication configuration (form, header, or cookie-based)

Trivy — Container Vulnerability Scanning

Type: trivy · Category: Container/Infrastructure · Targets: url, host

Scans container images, filesystems, and infrastructure-as-code for known vulnerabilities (CVEs), misconfigurations, and exposed secrets.

{
"target": "registry.example.com/myapp:latest",
"scanType": "trivy",
"options": {
"scanners": ["vuln", "misconfig", "secret"],
"severity": ["CRITICAL", "HIGH"],
"ignoreUnfixed": true
}
}
OptionTypeDefaultDescription
scannersstring[]["vuln"]Scanners: vuln, misconfig, secret, license
severitystring[]["CRITICAL","HIGH","MEDIUM"]Filter by severity
ignoreUnfixedbooleanfalseSkip vulnerabilities without available fixes
skipDirsstring[][]Directories to skip
skipFilesstring[][]Files to skip

Nuclei — Template-Based Detection

Type: nuclei · Category: Vulnerability Detection · Targets: url, host, domain

Uses community and custom templates to detect vulnerabilities, misconfigurations, and exposures across a wide range of technologies.

{
"target": "https://api.example.com",
"scanType": "nuclei",
"options": {
"templates": ["cves", "vulnerabilities", "misconfigurations"],
"severity": ["critical", "high", "medium"],
"concurrency": 25,
"rateLimit": 150
}
}
OptionTypeDefaultDescription
templatesstring[]["cves"]Template categories to run
severitystring[]AllFilter by severity
concurrencyinteger25Parallel template executions
rateLimitinteger150Max requests per second
tagsstring[][]Run only templates matching these tags
excludeTagsstring[][]Skip templates matching these tags

Nikto — Web Server Scanning

Type: nikto · Category: Web Server · Targets: url

Tests web servers for dangerous files, outdated software, and misconfigurations. Checks over 6,700 potentially dangerous files/CGIs.

{
"target": "https://www.example.com",
"scanType": "nikto",
"options": {
"tuning": "1234",
"maxTime": "600s",
"ssl": true
}
}
OptionTypeDefaultDescription
tuningstring"123"Test categories: 1=Files, 2=Misconfigs, 3=Info, 4=XSS, etc.
maxTimestringMax scan duration (e.g., "600s", "10m")
sslbooleanautoForce SSL mode

SQLMap — SQL Injection Detection

Type: sqlmap · Category: Web App · Targets: url

Automates detection and exploitation of SQL injection flaws. Supports all major database engines.

{
"target": "https://app.example.com/search?q=test",
"scanType": "sqlmap",
"options": {
"level": 3,
"risk": 2,
"technique": "BEUSTQ",
"dbs": true,
"batch": true
}
}
OptionTypeDefaultDescription
levelinteger1Test level (1–5). Higher = more payloads
riskinteger1Risk level (1–3). Higher = more aggressive
techniquestring"BEUSTQ"Injection techniques to test
dbsbooleanfalseEnumerate databases
batchbooleantrueNon-interactive mode
Production Safety

SQLMap can be aggressive. Always use level ≤ 3 and risk ≤ 2 on production systems. Use higher values only in isolated test environments.


Wapiti — Web Application Scanning

Type: wapiti · Category: Web App · Targets: url

Performs black-box web application vulnerability scanning. Crawls the web application, identifies attack surfaces, and launches targeted tests.

{
"target": "https://app.example.com",
"scanType": "wapiti",
"options": {
"modules": ["xss", "sql", "exec", "file", "crlf"],
"scope": "domain",
"maxDepth": 5
}
}
OptionTypeDefaultDescription
modulesstring[]AllAttack modules to enable
scopestring"domain"Crawl scope: url, page, folder, domain
maxDepthinteger3Maximum crawl depth
maxTimestringMax scan duration

theHarvester — OSINT Reconnaissance

Type: harvester · Category: OSINT · Targets: domain

Collects email addresses, subdomains, IPs, and metadata from public sources. Passive reconnaissance that doesn't interact directly with the target.

{
"target": "example.com",
"scanType": "harvester",
"options": {
"sources": ["google", "bing", "linkedin", "shodan", "crtsh"],
"limit": 500,
"dnsLookup": true
}
}
OptionTypeDefaultDescription
sourcesstring[]All publicData sources to query
limitinteger200Max results per source
dnsLookupbooleanfalsePerform DNS resolution of discovered hosts
dnsBrutebooleanfalseEnable DNS brute-force subdomain discovery

Sublist3r — Subdomain Enumeration

Type: sublist3r · Category: OSINT · Targets: domain

Enumerates subdomains using multiple search engines and DNS services. Discover your full attack surface.

{
"target": "example.com",
"scanType": "sublist3r",
"options": {
"engines": ["google", "bing", "yahoo", "virustotal", "dnsdumpster"],
"bruteforce": true,
"ports": "80,443,8080,8443",
"threads": 30
}
}
OptionTypeDefaultDescription
enginesstring[]AllSearch engines to use
bruteforcebooleanfalseEnable DNS brute force
portsstringScan discovered subdomains for open ports
threadsinteger10Concurrent threads

Sentinel — Multi-Engine Orchestration

Type: sentinel · Category: Unified/Comprehensive · Targets: url, host, domain, ip

Cert-IX's proprietary multi-engine orchestrated scan. Automatically selects and runs the most appropriate combination of scanners based on target type, then correlates and deduplicates findings into a unified report.

{
"target": "example.com",
"scanType": "sentinel",
"priority": "high",
"options": {
"depth": "standard",
"engines": ["nmap", "nuclei", "harvester", "sublist3r"],
"correlate": true,
"riskScore": true
}
}
OptionTypeDefaultDescription
depthstring"standard"Assessment depth: quick, standard, deep
enginesstring[]autoSpecific engines to include (default: auto-select)
correlatebooleantrueCorrelate findings across engines
riskScorebooleantrueCalculate aggregated risk score

Depth Levels:

DepthEngines UsedEstimated Duration
quickNmap + Nuclei5–15 minutes
standardNmap + Nuclei + Harvester + ZAP/Nikto15–45 minutes
deepAll applicable engines1–3 hours

Priority Levels

Priority affects queue ordering. Higher priority scans are processed first.

PriorityQueue BehaviorUse Case
criticalFront of queue, immediate processingActive incident response
highAhead of normal scansPre-deployment checks
normalStandard FIFO orderingRoutine assessments (default)
lowProcessed when capacity availableBackground/batch scans

Target Types

Target TypeExample FormatsCompatible Engines
hostserver1.example.comnmap, nuclei, sentinel
urlhttps://app.example.com/pathzap, nikto, sqlmap, wapiti, nuclei, trivy, sentinel
domainexample.comnmap, nuclei, harvester, sublist3r, sentinel
ip192.168.1.1, 2001:db8::1nmap, nuclei, sentinel
network192.168.1.0/24nmap
Auto-Detection

If you omit targetType, the API infers it from the target format. Explicit typing is recommended for clarity.

Cancel a Scan

Cancel a running or queued scan:

POST /api/v1/scans/:scanId/cancel

Required scope: scans:cancel

curl -X POST "https://api.cert-ix.com/scan-api/api/v1/scans/$SCAN_ID/cancel" \
-H "X-API-Key: $CERTIX_API_KEY"

List Scans

GET /api/v1/scans

Required scope: scans:list

ParameterTypeDefaultDescription
scanTypestringnmapFilter by scan engine
statusstringFilter by status
pageinteger1Page number
limitinteger20Results per page (max: 100)

Next Steps: