> ## Documentation Index
> Fetch the complete documentation index at: https://docs.attaxr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Scans

> Create, run, and manage reconnaissance scans.

A scan points Aquila at a target and tells the engine which tools to run.
The engine queues the scan, plans a workflow, and publishes an event per
tool result.

## Scan types

| `scanType`      | Focus                                     |
| --------------- | ----------------------------------------- |
| `full`          | The default broad sweep (alias: `recon`). |
| `fast`          | Monitoring pass (alias: `monitoring`).    |
| `web`           | HTTP surface discovery.                   |
| `port_scan`     | Open ports and services.                  |
| `dns`           | DNS records and subdomains.               |
| `vulnerability` | Vulnerability-focused probing.            |
| `discovery`     | Asset discovery only.                     |

## Create a scan

`POST /api/scans` with at least a `target`:

```json theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
{
  "name": "Juice Shop baseline",
  "target": "example.com",
  "scanType": "full",
  "scope": [{ "type": "domain", "value": "example.com" }],
  "scheduleType": "now"
}
```

Fields:

* `target` — required. One host or domain.
* `scope` — optional allowlist entries. The engine stays inside the scope.
* `workflowSteps` — optional custom tool plan. Each step names a tool, its
  args, env, retry count, and timeout.
* `scheduleType` — `now`, `once` with `runAt`, or `recurring` with `cron` or
  `recurringInterval`.

Scan starts sit in the expensive rate tier: 10 per minute.

## Hackbot scans

Send `"mode": "hackbot"` to create a scope container for a Hackbot chat
session instead of an engine scan. The row stays `pending`. Hackbot hunts
with its own tools. The dashboard wizard never sends this mode.

## Manage scans

* `GET /api/scans` — list with [pagination](/pagination). `?q=` searches the
  target.
* `GET /api/scans/{id}` — one scan. Falls back to the linked schedule when
  the id names a schedule.
* `POST /api/scans/{id}/rescan` — queue a fresh run of a finished scan.
* `PUT /api/scans/{id}` — partial update of the scan or its schedule fields.
* `DELETE /api/scans/{id}` — delete the scan and its dependent rows.
* `PATCH /api/scans/{id}/toggle` — pause or resume the recurring schedule
  behind a scan.

## Recurring scans

Set `scheduleType` to `recurring` and give a `cron`, or a
`recurringInterval` of `daily`, `weekly`, `monthly`, `every_n_days` with
`intervalDays`, or `custom`. Aquila computes the next run and the scheduler
fires it. See [Schedules](/guides/schedules).
