Docs
← Home Sign In Get Started

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

  1. Open the Batch tab in the dashboard
  2. Enter or paste target URLs — one per line
  3. Select scan type and optional IP overrides
  4. 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.