What are batch jobs?
A batch job starts scans for multiple target URLs simultaneously. All scans run in parallel — the batch finishes when the last scan completes. Useful for:
- Agencies scanning all client sites at once
- Scanning multiple environments (staging, production, regional mirrors) together
- Monthly security sweeps across a portfolio
Starting a batch job
From the dashboard
- Open the Batch tab in the dashboard
- Enter or paste target URLs — one per line
- Select scan type and optional IP overrides
- Click Start Batch
Via API
bash
curl -X POST \ -H "X-Shieldome-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "targets": [ "https://site1.com", "https://site2.com", "https://site3.com" ], "scan_type": "vuln" }' \ https://yourdomain.com/api/batch
response
{
"batch_id": "uuid",
"status": "running",
"total": 3,
"scan_ids": ["id1", "id2", "id3"]
}
Monitoring batch progress
bash
curl -H "X-Shieldome-Key: YOUR_API_KEY" \
https://yourdomain.com/api/batch/{batch_id}
response
{
"batch_id": "uuid",
"status": "completed",
"total": 3,
"completed": 3,
"failed": 0,
"scan_ids": ["id1", "id2", "id3"]
}
Bulk PDF report from a batch
Once all scans complete, generate a single combined PDF covering all targets:
bash
BASE="https://yourdomain.com" KEY="YOUR_API_KEY" BATCH_ID="your-batch-uuid" # 1. Fetch scan IDs from the batch as a JSON array SCAN_IDS=$(curl -s -H "X-Shieldome-Key: $KEY" \ "$BASE/api/batch/$BATCH_ID" \ | python3 -c "import sys,json; d=json.load(sys.stdin); print(json.dumps(d['scan_ids']))") # 2. Generate a single combined PDF for all scans curl -X POST \ -H "X-Shieldome-Key: $KEY" \ -H "Content-Type: application/json" \ -d "{\"scan_ids\": $SCAN_IDS}" \ "$BASE/api/report/bulk" \ -o batch-report.pdf
You can also download individual reports for each scan in the batch from the History tab — each scan appears as a separate entry.