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

# Continuous AML Monitoring

> Automatically re-screen approved sessions against updated sanctions lists.

Continuous AML Monitoring automatically re-screens approved identities against updated sanctions lists and PEP databases on a recurring schedule. When new matches appear, you're notified immediately via webhook.

## How It Works

<Steps>
  <Step title="Enable at session creation">
    Set `monitoring_enabled: true` and optionally `monitoring_frequency` when creating a session.
  </Step>

  <Step title="Automatic re-screening">
    After the session is approved, Verilock automatically re-runs AML screening on the configured schedule.
  </Step>

  <Step title="Webhook notification">
    When new matches are found, a `aml.monitoring.match` webhook is dispatched with match details.
  </Step>
</Steps>

## Enabling Monitoring

Include these fields when creating a session:

```json theme={null}
{
  "monitoring_enabled": true,
  "monitoring_frequency": "daily"
}
```

| Field                  | Type    | Default | Description                   |
| ---------------------- | ------- | ------- | ----------------------------- |
| `monitoring_enabled`   | boolean | `false` | Enable continuous monitoring  |
| `monitoring_frequency` | string  | `daily` | Schedule: `daily` or `weekly` |

## Schedule

| Frequency | Runs at   | Description                |
| --------- | --------- | -------------------------- |
| `daily`   | 04:00 UTC | Every day                  |
| `weekly`  | 04:00 UTC | Every 7 days from last run |

<Note>
  Monitoring only runs on sessions with `decision: approved`. Declined or expired sessions are not monitored.
</Note>

## Monitoring Webhook

When new matches are detected, a `aml.monitoring.match` event is dispatched:

```json theme={null}
{
  "event": "aml.monitoring.match",
  "data": {
    "screening_id": "aml_new-screening-uuid",
    "session_id": "ses_a1b2c3d4-...",
    "screened_name": "Jean Dupont",
    "status": "match",
    "highest_score": 0.91,
    "matches_found": 1,
    "is_monitoring_run": true
  },
  "timestamp": "2026-03-17T04:00:15Z"
}
```

## Monitoring in Session Response

The `GET /sessions/{id}` response includes monitoring fields:

```json theme={null}
{
  "monitoring_enabled": true,
  "monitoring_frequency": "weekly",
  "last_monitoring_at": "2026-03-16T04:00:00Z"
}
```

## Viewing Monitoring Results

All monitoring screenings are accessible via `GET /aml/screen/{id}` and are marked with `is_monitoring_run: true` to distinguish them from the initial screening.

<Warning>
  Monitoring screenings are billed at the same rate as regular AML screenings. Monitor your usage in the dashboard.
</Warning>

## Pricing

| Plan           | Included Screenings | Additional Screenings |
| -------------- | ------------------- | --------------------- |
| **Growth**     | 100/month           | \$0.50 per screening  |
| **Business**   | 1,000/month         | \$0.30 per screening  |
| **Enterprise** | Custom              | Custom pricing        |

Each re-screening counts as one screening. For example, 50 sessions monitored daily would consume approximately 1,500 screenings per month.

<Tip>
  Use `weekly` frequency for lower-risk profiles to reduce screening volume while maintaining compliance coverage.
</Tip>

## Dashboard UI

Manage and monitor active screenings from **Dashboard > AML > Continuous Monitoring**:

* **Active Monitors** -- view all sessions with monitoring enabled, their frequency, and last run time
* **Match History** -- browse all monitoring-triggered matches with filtering by date, risk score, and status
* **Pause / Resume** -- temporarily pause monitoring for individual sessions without disabling it
* **Bulk Actions** -- enable or disable monitoring across multiple sessions at once
* **Usage Metrics** -- track monthly screening consumption and projected usage
