Schedules

Set up recurring automated pentests (Team+ tier)

POST/v1/schedules

Create a schedule

Create a recurring pentest schedule for a self-hosted target. Scheduled pentests run automatically at the specified frequency and time. Requires Launch tier or above.

Requires Launch tier or above. Returns 403 if your subscription does not include scheduled pentests. All times are in UTC.

Request Body

NameTypeDescription
targetIdrequired
stringID of the target to schedule pentests for
frequencyrequired
string
dailyweeklybiweeklymonthly
How often to run the pentest
hourrequired
numberHour of day to run (0-23, UTC)
minute
numberMinute of hour to run (0-59, UTC). Defaults to 0
dayOfWeek
numberDay of week for weekly/biweekly schedules (0 = Sunday, 6 = Saturday)
dayOfMonth
numberDay of month for monthly schedules (1-28). Values above 28 are not supported to avoid month-length issues
modelPreset
string
freelowmediumhighultra
AI model quality preset for scheduled pentests

Example Request

bash
curl -X POST "https://apviso.com/api/v1/schedules" \
  -H "X-API-Key: apvk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
  "targetId": "019414a8-f7c0-7d4a-b5e3-9c2d1e8f4a6b",
  "frequency": "weekly",
  "hour": 3,
  "minute": 0,
  "dayOfWeek": 1,
  "modelPreset": "medium"
}'

Response

Returns the newly created schedule with the computed next run time. The schedule is enabled by default.

json
{
  "schedule": {
    "id": "019414d5-e6f7-7a8b-c9d0-1e2f3a4b5c6d",
    "targetId": "019414a8-f7c0-7d4a-b5e3-9c2d1e8f4a6b",
    "target": {
      "domain": "example.com"
    },
    "frequency": "weekly",
    "hour": 3,
    "minute": 0,
    "dayOfWeek": 1,
    "dayOfMonth": null,
    "modelPreset": "medium",
    "enabled": true,
    "nextRunAt": "2026-05-04T03:00:00Z",
    "lastRunAt": null,
    "lastScanId": null,
    "createdAt": "2026-05-03T16:00:12Z",
    "updatedAt": "2026-05-03T16:00:12Z"
  }
}
GET/v1/schedules

List schedules

Retrieve all pentest schedules configured for your account. Returns both enabled and disabled schedules.

Example Request

bash
curl -X GET "https://apviso.com/api/v1/schedules" \
  -H "X-API-Key: apvk_your_key_here"

Response

Returns the list of all schedules with their configuration, next run time, and last execution details.

json
{
  "schedules": [
    {
      "id": "019414d5-e6f7-7a8b-c9d0-1e2f3a4b5c6d",
      "targetId": "019414a8-f7c0-7d4a-b5e3-9c2d1e8f4a6b",
      "target": {
        "domain": "example.com"
      },
      "frequency": "weekly",
      "hour": 3,
      "minute": 0,
      "dayOfWeek": 1,
      "modelPreset": "medium",
      "enabled": true,
      "nextRunAt": "2026-04-14T03:00:00Z",
      "lastRunAt": "2026-04-07T03:00:00Z",
      "lastScanId": "019414b0-c1d2-7e3f-a4b5-6c7d8e9f0a1b",
      "createdAt": "2026-03-15T10:30:00Z",
      "updatedAt": "2026-04-07T03:00:00Z"
    }
  ]
}
GET/v1/schedules/:id

Get schedule details

Retrieve detailed information about a specific pentest schedule, including its execution history summary.

Path Parameters

NameTypeDescription
idrequired
stringSchedule ID (UUIDv7)

Example Request

bash
curl -X GET "https://apviso.com/api/v1/schedules/:id" \
  -H "X-API-Key: apvk_your_key_here"

Response

Returns the full schedule details.

json
{
  "schedule": {
    "id": "019414d5-e6f7-7a8b-c9d0-1e2f3a4b5c6d",
    "targetId": "019414a8-f7c0-7d4a-b5e3-9c2d1e8f4a6b",
    "target": {
      "domain": "example.com"
    },
    "frequency": "weekly",
    "hour": 3,
    "minute": 0,
    "dayOfWeek": 1,
    "dayOfMonth": null,
    "modelPreset": "medium",
    "enabled": true,
    "nextRunAt": "2026-05-04T03:00:00Z",
    "lastRunAt": "2026-04-27T03:00:00Z",
    "lastScanId": "019414b0-c1d2-7e3f-a4b5-6c7d8e9f0a1b",
    "createdAt": "2026-04-15T10:30:00Z",
    "updatedAt": "2026-04-27T03:00:00Z"
  }
}
PATCH/v1/schedules/:id

Update a schedule

Update the configuration of an existing pentest schedule. You can modify the frequency, timing, model preset, or enable/disable the schedule. Only provided fields are updated.

Path Parameters

NameTypeDescription
idrequired
stringSchedule ID (UUIDv7)

Request Body

NameTypeDescription
frequency
string
dailyweeklybiweeklymonthly
Updated frequency
hour
numberUpdated hour (0-23, UTC)
minute
numberUpdated minute (0-59)
dayOfWeek
numberUpdated day of week (0-6)
dayOfMonth
numberUpdated day of month (1-28)
modelPreset
string
freelowmediumhighultra
Updated model preset
enabled
booleanEnable or disable the schedule

Example Request

bash
curl -X PATCH "https://apviso.com/api/v1/schedules/:id" \
  -H "X-API-Key: apvk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
  "frequency": "biweekly",
  "modelPreset": "high",
  "enabled": true
}'

Response

Returns the full updated schedule object with the recomputed next run time.

json
{
  "schedule": {
    "id": "019414d5-e6f7-7a8b-c9d0-1e2f3a4b5c6d",
    "targetId": "019414a8-f7c0-7d4a-b5e3-9c2d1e8f4a6b",
    "target": {
      "domain": "example.com"
    },
    "frequency": "biweekly",
    "hour": 3,
    "minute": 0,
    "dayOfWeek": 1,
    "dayOfMonth": null,
    "modelPreset": "high",
    "enabled": true,
    "nextRunAt": "2026-05-18T03:00:00Z",
    "lastRunAt": "2026-04-27T03:00:00Z",
    "lastScanId": "019414b0-c1d2-7e3f-a4b5-6c7d8e9f0a1b",
    "createdAt": "2026-04-15T10:30:00Z",
    "updatedAt": "2026-05-03T16:15:44Z"
  }
}
DELETE/v1/schedules/:id

Delete a schedule

Permanently delete a pentest schedule. Any currently running pentest initiated by this schedule will continue to completion, but no future pentests will be triggered.

Path Parameters

NameTypeDescription
idrequired
stringSchedule ID (UUIDv7)

Example Request

bash
curl -X DELETE "https://apviso.com/api/v1/schedules/:id" \
  -H "X-API-Key: apvk_your_key_here"

Response

Returns a confirmation message. In-progress pentests triggered by this schedule are not affected.

json
{
  "success": true
}