Skip to main content
Version: 1.0.0

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)
topPortsintegerβ€”Scan 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
authenticationobjectβ€”Authentication 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.
maxTimestringβ€”Max 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
maxTimestringβ€”Max 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
portsstringβ€”Scan 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
statusstringβ€”Filter by status
pageinteger1Page number
limitinteger20Results per page (max: 100)

Next Steps: