Skip to content

Scheduled Scans API

Maintained by: Aether365 Team Audience: Developers Scope: Scheduled scan API endpoints - creating and managing scan schedules

Scheduled scans define recurring scan jobs. Each scheduled scan defines a recurring trigger that fires at the configured interval.

List Scheduled Scans

Returns all scheduled scans for the authenticated tenant, including the automatic plan scan.

GET /tenants/me/scheduled-scans

Example Request

bash
curl https://api.aether365.io/tenants/me/scheduled-scans \
  -H "Authorization: Bearer <token>"

Example Response

json
{
  "success": true,
  "data": [
    {
      "id": "plan",
      "isPlanSchedule": true,
      "name": "Automatic plan scan",
      "frequency": "weekly",
      "hour": 0,
      "minute": 0,
      "dayOfWeek": 0,
      "dayOfMonth": 1,
      "timezone": "UTC",
      "enabled": true,
      "scanType": "compliance",
      "lastTriggeredAt": "2026-04-07T00:00:00Z"
    },
    {
      "id": "sched_abc123",
      "isPlanSchedule": false,
      "name": "Weekly exposure scan",
      "frequency": "weekly",
      "hour": 6,
      "minute": 0,
      "dayOfWeek": 3,
      "dayOfMonth": null,
      "timezone": "Europe/London",
      "enabled": true,
      "scanType": "exposure",
      "lastTriggeredAt": "2026-04-09T06:00:00Z"
    }
  ]
}

Response Fields

FieldTypeDescription
idstringSchedule identifier ("plan" for the automatic plan schedule)
isPlanSchedulebooleantrue if this is the automatic plan scan
namestringDisplay name
frequencystringdaily, weekly, or monthly
hourintegerHour of day to trigger (0–23)
minuteintegerMinute of hour to trigger (0–59)
dayOfWeekintegerDay of week for weekly schedules (0=Mon, 6=Sun)
dayOfMonthintegerDay of month for monthly schedules (1–31)
timezonestringIANA timezone string
enabledbooleanWhether the schedule is active
scanTypestringcompliance or exposure
lastTriggeredAtstring or nullISO 8601 timestamp of last trigger

Create Scheduled Scan

Creates a new scheduled scan.

POST /tenants/me/scheduled-scans

Request Body

json
{
  "name": "Monthly exposure scan",
  "frequency": "monthly",
  "hour": 3,
  "minute": 0,
  "dayOfMonth": 1,
  "timezone": "UTC",
  "scanType": "exposure",
  "enabled": true
}
FieldTypeRequiredDescription
namestringYesDisplay name
frequencystringYesdaily, weekly, or monthly
hourintegerYes0–23
minuteintegerYes0–59
dayOfWeekintegerFor weekly0=Mon, 6=Sun
dayOfMonthintegerFor monthly1–31
timezonestringYesIANA timezone (e.g., UTC, Europe/Berlin)
scanTypestringYescompliance or exposure
enabledbooleanNoDefaults to true

Example Request

bash
curl -X POST https://api.aether365.io/tenants/me/scheduled-scans \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Monthly exposure scan",
    "frequency": "monthly",
    "hour": 3,
    "minute": 0,
    "dayOfMonth": 1,
    "timezone": "UTC",
    "scanType": "exposure",
    "enabled": true
  }'

Errors

CodeHTTPDescription
SCAN_PLAN_LIMIT_REACHED429Custom schedule limit reached for your plan
VALIDATION_ERROR400Missing or invalid fields

Update Scheduled Scan

Updates an existing scheduled scan. Only the fields you include are updated.

PATCH /tenants/me/scheduled-scans/{scheduledScanId}

Example: Pause a schedule

bash
curl -X PATCH https://api.aether365.io/tenants/me/scheduled-scans/sched_abc123 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

Example: Change the hour

bash
curl -X PATCH https://api.aether365.io/tenants/me/scheduled-scans/sched_abc123 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"hour": 8}'

Delete Scheduled Scan

Permanently deletes a scheduled scan and its underlying schedule.

DELETE /tenants/me/scheduled-scans/{scheduledScanId}

WARNING

The automatic plan scan (id: "plan") cannot be deleted via the API.

Example Request

bash
curl -X DELETE https://api.aether365.io/tenants/me/scheduled-scans/sched_abc123 \
  -H "Authorization: Bearer <token>"

Example Response

json
{
  "success": true,
  "data": null
}
Was this page helpful?