FortWatchFortWatchDocs
Menu

Create a scan schedule

POSThttps://api.fortwatch.ai/app/scan-schedules
Scope scans:writeOperation ID createScanSchedule

Daily, weekly, monthly or every N days, at a time of day in UTC, optionally only within a window of hours and weekdays. Daily and custom schedules depend on the plan; an asset has at most 5 schedules (1 on Essential).

Request body

JSON, required.

FieldTypeDescription
assetIdintegerRequired. The asset to scan.
frequencystringRequired.One of: daily, weekly, monthly, interval
dayOfWeekintegerWeekly: 0 = Sunday … 6 = Saturday.
dayOfMonthintegerMonthly: the day of the month.
timestringRequired. The time of day, UTC (HH:MM).
intervalDaysinteger | null
windowStartHourinteger | null
windowEndHourinteger | null
windowDaysinteger[]

Example request

curl -X POST "https://api.fortwatch.ai/app/scan-schedules" \
  -H "Authorization: Bearer $FORTWATCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "assetId": 42,
  "frequency": "daily",
  "dayOfWeek": 1,
  "dayOfMonth": 1,
  "time": "03:30",
  "intervalDays": 1,
  "windowStartHour": 1,
  "windowEndHour": 1,
  "windowDays": [
    1
  ]
}'

Response 201

Created.

FieldTypeDescription
idrequirednumber
assetIdrequirednumber
namerequiredstring
frequencyrequiredstring
dayOfWeekrequirednumber | null
dayOfMonthrequirednumber | null
timerequiredstring
intervalDaysrequirednumber | null
windowStartHourrequirednumber | null
windowEndHourrequirednumber | null
windowDaysrequirednumber[]
enabledrequiredboolean
lastRunAtrequiredstring (date-time) | null
nextRunAtrequiredstring (date-time) | null
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
assetrequiredobject
idrequirednumber
projectIdrequirednumber
namerequiredstring | null
typerequiredstring
valuerequiredstring
statusrequiredstring
canonicalUrlrequiredstring | null
resolvedIprequiredstring | null
cdnProviderrequiredstring | null
bucketProviderrequiredstring | null
lastCheckedAtrequiredstring (date-time) | null
failReasonrequiredstring | null
skippedRedirectHostrequiredstring | null
disabledScannerTypesrequiredstring[]
portScanModerequiredstring
nucleiMinSeverityrequiredstring
ownershipVerifiedAtrequiredstring (date-time) | null
ownershipTokenrequiredstring
ownershipMethodrequiredstring | null
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
projectrequiredobject
idrequirednumber
namerequiredstring
json
{
  "id": 42,
  "assetId": 42,
  "name": "Production",
  "frequency": "string",
  "dayOfWeek": 1,
  "dayOfMonth": 1,
  "time": "string",
  "intervalDays": 1,
  "windowStartHour": 1,
  "windowEndHour": 1,
  "windowDays": [
    1
  ],
  "enabled": true,
  "lastRunAt": "2026-10-16T12:00:00.000Z",
  "nextRunAt": "2026-10-16T12:00:00.000Z",
  "createdAt": "2026-10-16T12:00:00.000Z",
  "updatedAt": "2026-10-16T12:00:00.000Z",
  "asset": {
    "id": 42,
    "projectId": 42,
    "name": "Production",
    "type": "string",
    "value": "app.example.com",
    "status": "string",
    "canonicalUrl": "string",
    "resolvedIp": "string",
    "cdnProvider": "string",
    "bucketProvider": "string",
    "lastCheckedAt": "2026-10-16T12:00:00.000Z",
    "failReason": "string",
    "skippedRedirectHost": "string",
    "disabledScannerTypes": [
      "string"
    ],
    "portScanMode": "string",
    "nucleiMinSeverity": "string",
    "ownershipVerifiedAt": "2026-10-16T12:00:00.000Z",
    "ownershipToken": "string",
    "ownershipMethod": "string",
    "createdAt": "2026-10-16T12:00:00.000Z",
    "updatedAt": "2026-10-16T12:00:00.000Z",
    "project": {
      "id": 42,
      "name": "Production"
    }
  }
}

Errors

400The request is not valid: a field is missing or has the wrong shape (the message names it).
401No valid credentials: the API key or access token is missing, revoked or expired (INVALID_API_KEY, INVALID_TOKEN).
403Not allowed: the key or token lacks this scope (SCOPE_REQUIRED), the route is dashboard-only (SESSION_REQUIRED), or a plan limit applies.
429Too many requests (RATE_LIMITED): wait the seconds Retry-After gives.