Watched Sites API
Add and manage sites you want to monitor over time. Sites are automatically re-scanned weekly and you receive webhook or email alerts when scores change.
| Tier | Limit |
|---|---|
| Free | 3 sites |
| Pro | 10 sites |
| Growth | 100 sites |
Preferred base path:
/api/v1/watched-sites. The legacy /api/v1/watched-sites path still works but the shorter path is recommended for new integrations.GET /api/v1/watched-sites
Request
curl https://zeodyn.com/api/v1/watched-sites \
-H "Authorization: Bearer zd_live_xxxxx"Response (200 OK)
{
"sites": [
{
"id": "s1a2b3c4-...",
"url": "https://example.com",
"label": "Main site",
"lastScore": 72,
"lastScannedAt": "2026-02-22T10:30:00.000Z",
"alertEnabled": true,
"scoreChange": 3,
"isCompetitor": false,
"thresholds": [
{ "id": "t1...", "condition": "drops_below", "value": 70, "isActive": true }
],
"createdAt": "2026-02-20T12:00:00.000Z"
}
],
"limit": 10,
"used": 1
}POST /api/v1/watched-sites
Add a site to your watchlist. The URL is validated for SSRF, normalised for deduplication, and checked against your tier limit.
Request
curl -X POST https://zeodyn.com/api/v1/watched-sites \
-H "Authorization: Bearer zd_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "label": "Main site"}'| Field | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to watch (max 2048 chars) |
| label | string | No | Friendly name (max 100 chars) |
| alertEnabled | boolean | No | Enable score change alerts (default true) |
Response (201 Created)
{
"site": {
"id": "s1a2b3c4-...",
"url": "https://example.com",
"label": "Main site",
"lastScore": null,
"lastScannedAt": null,
"alertEnabled": true,
"scoreChange": null,
"createdAt": "2026-02-22T10:30:00.000Z"
}
}GET /api/v1/watched-sites/{id}
Get a single watched site with full details and score history (up to 90 snapshots).
Request
curl https://zeodyn.com/api/v1/watched-sites/s1a2b3c4-... \
-H "Authorization: Bearer zd_live_xxxxx"Response (200 OK)
{
"site": { "..." : "..." },
"scoreHistory": [
{ "score": 72, "scannedAt": "2026-02-22T10:30:00.000Z" },
{ "score": 69, "scannedAt": "2026-02-15T10:30:00.000Z" }
]
}PATCH /api/v1/watched-sites/{id}
Update a watched site. Supports partial updates — only include the fields you want to change. Threshold fields require Growth or above.
Request
curl -X PATCH https://zeodyn.com/api/v1/watched-sites/s1a2b3c4-... \
-H "Authorization: Bearer zd_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"label": "Updated name", "isCompetitor": true}'DELETE /api/v1/watched-sites/{id}
Request
curl -X DELETE https://zeodyn.com/api/v1/watched-sites/s1a2b3c4-... \
-H "Authorization: Bearer zd_live_xxxxx"Response (200 OK)
{ "deleted": true }For threshold management, see the dedicated Thresholds API documentation.