Skip to main content
PUT
cURL

Authorizations

x-api-key
string
header
required

API key for authentication. You can find your API key in the Site Spy dashboard under Settings → API.

Path Parameters

uuid
string<uuid>
required

Tag unique ID

Body

application/json
url
string<uri>

URL to monitor for changes

Maximum string length: 5000
title
string | null

Custom title for the web page change monitor (watch), not to be confused with page_title

Maximum string length: 5000
tag
string

Tag UUID to associate with this web page change monitor (watch)

Maximum string length: 5000
tags
string[]

Array of tag UUIDs

paused
boolean

Whether the web page change monitor (watch) is paused

notification_muted
boolean

Whether notifications are muted

method
enum<string>

HTTP method to use

Available options:
GET,
POST,
DELETE,
PUT
fetch_backend
string
default:system

Backend to use for fetching content. Common values:

  • system (default) - Use the system-wide default fetcher
  • html_requests - Fast requests-based fetcher
  • html_webdriver - Browser-based fetcher (Playwright/Puppeteer)
  • extra_browser_* - Custom browser configurations (if configured)
  • Plugin-provided fetchers (if installed)
Pattern: ^(system|html_requests|html_webdriver|extra_browser_.+)$
headers
object

HTTP headers to include in requests

body
string | null

HTTP request body

Maximum string length: 5000
proxy
string | null

Proxy configuration

Maximum string length: 5000
ignore_status_codes
boolean | null

Ignore HTTP status code errors (boolean or null)

webdriver_delay
integer | null

Delay in seconds for webdriver

webdriver_js_execute_code
string | null

JavaScript code to execute

Maximum string length: 5000
time_between_check
object

Time intervals between checks. All fields must be non-negative. At least one non-zero value required when not using default settings.

time_between_check_use_default
boolean
default:true

Whether to use global settings for time between checks - defaults to true if not set

notification_urls
string[]

Notification URLs for this web page change monitor (watch). Maximum 100 URLs.

Maximum array length: 100
Maximum string length: 1000
notification_title
string | null

Custom notification title

Maximum string length: 5000
notification_body
string | null

Custom notification body

Maximum string length: 5000
notification_format
enum<string>

Format for notifications

Available options:
text,
html,
htmlcolor,
markdown,
System default
track_ldjson_price_data
boolean | null

Whether to track JSON-LD price data

browser_steps
object[]

Browser automation steps. Maximum 100 steps allowed.

Maximum array length: 100
processor
enum<string>
default:text_json_diff

Optional processor mode to use for change detection. image_ssim_diff (screenshot monitoring) requires Pro plan. Defaults to text_json_diff if not specified.

Available options:
restock_diff,
text_json_diff,
image_ssim_diff
screenshot_enabled
boolean
default:false

When true, capture and store screenshots alongside text snapshots on each check. Requires Pro plan and fetch_backend set to a browser-based fetcher (e.g. html_webdriver).

include_filters
string[]

CSS/XPath selectors to extract specific content from the page

Maximum array length: 100
Maximum string length: 5000
subtractive_selectors
string[]

CSS/XPath selectors to remove content from the page

Maximum array length: 100
Maximum string length: 5000
ignore_text
string[]

Text patterns to ignore in change detection

Maximum array length: 100
Maximum string length: 5000
trigger_text
string[]

Text/regex patterns that must be present to trigger a change

Maximum array length: 100
Maximum string length: 5000
text_should_not_be_present
string[]

Text that should NOT be present (triggers alert if found)

Maximum array length: 100
Maximum string length: 5000
extract_text
string[]

Regex patterns to extract specific text after filtering

Maximum array length: 100
Maximum string length: 5000
trim_text_whitespace
boolean
default:false

Strip leading/trailing whitespace from text

sort_text_alphabetically
boolean
default:false

Sort lines alphabetically before comparison

remove_duplicate_lines
boolean
default:false

Remove duplicate lines from content

check_unique_lines
boolean
default:false

Compare against all history for unique lines

strip_ignored_lines
boolean | null

Remove lines matching ignore patterns

filter_text_added
boolean
default:true

Include added text in change detection

filter_text_removed
boolean
default:true

Include removed text in change detection

filter_text_replaced
boolean
default:true

Include replaced text in change detection

in_stock_only
boolean
default:true

Only trigger on in-stock transitions (restock_diff processor)

follow_price_changes
boolean
default:true

Monitor and track price changes (restock_diff processor)

price_change_threshold_percent
number | null

Minimum price change percentage to trigger notification

notification_screenshot
boolean
default:false

Include screenshot in notifications (if supported by notification URL)

filter_failure_notification_send
boolean
default:true

Send notification when filters fail to match content

use_page_title_in_list
boolean | null

Display page title in watch list (null = use system default)

history_snapshot_max_length
integer | null

Maximum number of history snapshots to keep (null = use system default)

Required range: 1 <= x <= 1000
time_schedule_limit
object

Weekly schedule limiting when checks can run

conditions
object[]

Array of condition rules for change detection logic (empty array when not set)

Maximum array length: 100
conditions_match_logic
enum<string>
default:ALL

Logic operator - ALL (match all conditions) or ANY (match any condition)

Available options:
ALL,
ANY
ai_alert_condition
string | null

Plain-English condition for AI smart alerts (Pro+ only). When set, AI evaluates each change against this condition and suppresses notifications that don't match. Example - "Only notify me if the price drops below $50".

Maximum string length: 500
track_what
string | null

User's monitoring intent, e.g. "price changes", "new job listings". Set by smart-configure or AI chat when the user describes what they want to track.

Maximum string length: 500
overrides_watch
boolean | null

Whether this tag's settings override watch settings for all watches in this tag/group.

  • true: Tag settings override watch settings
  • false: Tag settings do not override (watches use their own settings)
  • null: Not decided yet / inherit default behavior

Response

Tag updated successfully