API Reference

Overview

Create Schedule

The Snapshot Schedule API lets you create automated schedules for recurring website screenshot captures. A schedule can contain one or more website URLs and can run once, at a fixed interval, or according to a cron expression. Each scheduled screenshot can be configured with options such as viewport dimensions, full-page capture, image format, quality, capture delay, page loading conditions, CSS selectors, element capture, custom User-Agent and language settings, and optional HTML or text extraction. Use this endpoint when you want to automate website screenshots on a recurring schedule instead of triggering each capture manually. Scheduled captures can be used for website monitoring, visual change tracking, historical records, and automated reporting.

Endpoint

POSThttps://snapshot-api.mindiqglobal.com/api/v1/schedules

Request Body

{
  "name": "Daily Homepage Check",
  "description": "Track homepage changes",
  "schedule": {
    "type": "INTERVAL",
    "firstRunAt": "2026-08-07T09:00:00Z",
    "intervalValue": 1,
    "intervalUnit": "DAYS"
  },
  "items": [
    {
      "url": "https://example.com",
      "width": 1920,
      "height": 1080,
      "fullPage": true,
      "format": "png",
      "responseType": "json",
      "quality": 100,
      "delay": 0,
      "waitUntil": "page_loaded",
      "extractHtml": true,
      "extractText": true
    }
  ]
}

Request Body Parameters

FieldRequiredTypeDescription
nameYesstringSchedule name.
descriptionNostringSchedule description.
scheduleYesobjectSchedule timing configuration object.
schedule.typeYesenumSchedule type. Possible values: ONCE, INTERVAL, CRON.
schedule.firstRunAtConditionaldatetimeFirst run datetime in ISO-8601 format. Required for ONCE; optional for other types based on workflow.
schedule.intervalValueConditionalintegerInterval amount. Required when schedule.type is INTERVAL. Expected positive integer (for example, 1, 2, 12).
schedule.intervalUnitConditionalenumInterval unit. Required when schedule.type is INTERVAL. Possible values: MINUTES, HOURS, DAYS, WEEKS, MONTHS.
schedule.cronExpressionConditionalstringCron expression. Required when schedule.type is CRON.
itemsYesarrayList of screenshot items to capture.
items[].urlYesstringTarget URL (http:// or https://).
items[].widthNointegerViewport width. Expected positive integer (for example, 1280, 1920).
items[].heightNointegerViewport height. Expected positive integer (for example, 720, 1080).
items[].fullPageNobooleanCapture full page. Possible values: true, false. Cannot be combined with crop or element.
items[].formatNoenumImage format. Possible values: png, jpeg.
items[].responseTypeNoenumScheduled captures support json only.
items[].qualityNointegerJPEG quality. Allowed range: 0-100.
items[].delayNonumberCapture delay in seconds. Allowed range: 0-10.
items[].waitUntilNoenumdom_loaded, page_loaded, network_idle.
items[].waitUntilTimeoutNonumberAllowed range: 1-30 seconds.
items[].waitForNostringCSS selector to wait for before capture (max wait 15s).
items[].cropNostringCrop rectangle left,top,width,height. Cannot be combined with fullPage or element.
items[].elementNostringCapture first matching element selector. Cannot be combined with fullPage or crop.
items[].thumbnailWidthNointegerPositive integer. Preserves aspect ratio.
items[].userAgentNostringCustom user-agent.
items[].acceptLanguageNostringCustom accept-language.
items[].extractHtmlNobooleanDefault false. Only with responseType=json.
items[].extractTextNobooleanDefault false. Only with responseType=json.

Success Response

{
  "id": 21,
  "name": "Daily Homepage Check",
  "description": "Track homepage changes",
  "status": "ACTIVE",
  "schedule": {
    "type": "INTERVAL",
    "firstRunAt": "2026-08-07T09:00:00Z",
    "intervalValue": 1,
    "intervalUnit": "DAYS",
    "cronExpression": null
  },
  "nextRunAt": "2026-08-07T09:00:00Z",
  "lastRunAt": null,
  "items": [
    {
      "id": 44,
      "url": "https://example.com",
      "width": 1920,
      "height": 1080,
      "fullPage": true,
      "format": "png",
      "responseType": "json",
      "quality": 100,
      "delay": 0,
      "waitUntil": "page_loaded",
      "waitUntilTimeout": 15,
      "waitFor": null,
      "crop": null,
      "element": null,
      "thumbnailWidth": null,
      "userAgent": null,
      "acceptLanguage": null,
      "extractHtml": true,
      "extractText": true,
      "createdAt": "2026-08-06T10:00:00Z",
      "updatedAt": "2026-08-06T10:00:00Z"
    }
  ],
  "createdAt": "2026-08-06T10:00:00Z",
  "updatedAt": "2026-08-06T10:00:00Z"
}

Response Body Parameters

NameTypeDescription
idintegerSchedule ID.
namestringSchedule name.
descriptionstring | nullSchedule description.
statusenumSchedule status, Possible values: ACTIVE, COMPLETED
scheduleobjectSchedule timing configuration.
schedule.typeenumPossible values: ONCE, INTERVAL, CRON.
schedule.firstRunAtdatetime | nullFirst run datetime in ISO-8601 format.
schedule.intervalValueinteger | nullInterval value for interval schedules.
schedule.intervalUnitenum | nullPossible values: MINUTES, HOURS, DAYS, WEEKS, MONTHS.
schedule.cronExpressionstring | nullCron expression for cron schedules.
nextRunAtdatetime | nullNext run datetime in ISO-8601 format.
lastRunAtdatetime | nullLast run datetime in ISO-8601 format.
itemsarraySchedule items.
items[].idintegerSchedule item ID.
items[].urlstringTarget URL.
items[].widthinteger | nullViewport width.
items[].heightinteger | nullViewport height.
items[].fullPagebooleanFull page flag. Possible values: true, false.
items[].formatenumPossible values: png, jpeg.
items[].responseTypeenumScheduled captures use json.
items[].qualityinteger | nullJPEG quality (0-100).
items[].delaynumber | nullCapture delay in seconds.
items[].waitUntilenum | nulldom_loaded, page_loaded, network_idle.
items[].waitUntilTimeoutnumber | nullwait_until timeout in seconds.
items[].waitForstring | nullCSS selector wait target.
items[].cropstring | nullCrop rectangle left,top,width,height.
items[].elementstring | nullElement selector target.
items[].thumbnailWidthinteger | nullThumbnail width.
items[].userAgentstring | nullCustom user-agent.
items[].acceptLanguagestring | nullCustom accept-language.
items[].extractHtmlbooleanExtract HTML enabled state.
items[].extractTextbooleanExtract text enabled state.
items[].createdAtdatetimeItem creation datetime in ISO-8601 format.
items[].updatedAtdatetimeItem update datetime in ISO-8601 format.
createdAtdatetimeSchedule creation datetime in ISO-8601 format.
updatedAtdatetimeSchedule update datetime in ISO-8601 format.