Scheduled Audits

Scheduled audits run on a cron schedule, provisioning a fresh sandbox and executing the configured audit type at each interval. See the Scheduling guide for cron syntax and use cases.

Create a schedule

POST /api/workspaces/{workspaceId}/scheduled-audits Body
{
  "name": "Weekly production scan",
  "auditType": "shallow",
  "cronExpression": "0 9 * * 1",
  "targets": ["acme.example.com"]
}
FieldTypeDescription
namestringDisplay label
auditTypestringshallow, deep, or autonomous
cronExpressionstringStandard 5-field cron
targetsarrayTarget domains
scopestringRequired only for autonomous type — operator brief
Response (201)
{
  "success": true,
  "data": {
    "schedule": {
      "id": "sched_abc123",
      "name": "Weekly production scan",
      "auditType": "shallow",
      "cronExpression": "0 9 * * 1",
      "isActive": true,
      "nextRunAt": "2026-05-25T09:00:00.000Z",
      "lastRunAt": null,
      "createdAt": "2026-05-18T12:00:00.000Z"
    }
  }
}

List schedules

GET /api/workspaces/{workspaceId}/scheduled-audits Response (200)
{
  "success": true,
  "data": {
    "schedules": [
      {
        "id": "sched_abc123",
        "name": "Weekly production scan",
        "auditType": "shallow",
        "cronExpression": "0 9 * * 1",
        "isActive": true,
        "nextRunAt": "2026-05-25T09:00:00.000Z",
        "lastRunAt": "2026-05-18T09:00:00.000Z"
      }
    ]
  }
}

Get a schedule

GET /api/workspaces/{workspaceId}/scheduled-audits/{scheduleId} Response (200)
{
  "success": true,
  "data": {
    "schedule": { ... }
  }
}

Pause or resume a schedule

PUT /api/workspaces/{workspaceId}/scheduled-audits/{scheduleId} Body
{
  "isActive": false
}
Paused schedules retain their config but skip executions until reactivated.

Delete a schedule

DELETE /api/workspaces/{workspaceId}/scheduled-audits/{scheduleId} Response (200)
{
  "success": true,
  "message": "Schedule deleted"
}
Deleting a schedule does not affect past audits triggered by it. Findings and reports remain in the workspace.

Cron tips

ExpressionRuns
0 */6 * * *Every 6 hours
0 9 * * 1-5Weekdays at 9 AM
0 0 1 * *First of the month at midnight
*/30 * * * *Every 30 minutes (use with shallow audits only)
Schedules respect your plan’s concurrency limit. If two schedules fire simultaneously and your limit is 1, the second will queue until the first completes or fail with CONCURRENCY_LIMIT_EXCEEDED.