Thresholds API
Growth — Create condition-based score thresholds on any watched site. When a scan result triggers a condition, you receive a threshold_alert webhook and optionally an email alert.
Each watched site supports one threshold per condition type. Creating a threshold for an existing condition replaces the previous value.
| Condition | Description |
|---|---|
| drops_below | Alert when the Zeodyn Score™ falls below the value |
| rises_above | Alert when the Zeodyn Score™ rises above the value |
| changes_by | Alert when the score changes by more than the value (in either direction) |
GET /api/v1/watched-sites/{id}/thresholds
List all threshold records for a watched site.
Request
curl https://zeodyn.com/api/v1/watched-sites/s1a2b3c4-.../thresholds \
-H "Authorization: Bearer zd_live_xxxxx"Response (200 OK)
{
"thresholds": [
{
"id": "t1a2b3c4-...",
"condition": "drops_below",
"value": 70,
"isActive": true,
"createdAt": "2026-02-22T10:30:00.000Z"
},
{
"id": "t2b3c4d5-...",
"condition": "changes_by",
"value": 10,
"isActive": true,
"createdAt": "2026-02-22T10:35:00.000Z"
}
]
}POST /api/v1/watched-sites/{id}/thresholds
Create or update a threshold for a watched site. If a threshold with the same condition already exists, it is updated (upsert).
| Field | Type | Required | Description |
|---|---|---|---|
| condition | string | Yes | One of drops_below, rises_above, or changes_by |
| value | integer | Yes | Score value (0–100) |
Request
curl -X POST https://zeodyn.com/api/v1/watched-sites/s1a2b3c4-.../thresholds \
-H "Authorization: Bearer zd_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"condition": "drops_below", "value": 70}'Response (201 Created)
{
"threshold": {
"id": "t1a2b3c4-...",
"condition": "drops_below",
"value": 70,
"isActive": true,
"createdAt": "2026-02-22T10:30:00.000Z"
}
}Only one threshold per condition per site is allowed. Posting the same condition again updates the existing threshold value.
DELETE /api/v1/watched-sites/{id}/thresholds/{thresholdId}
Remove a threshold record from a watched site.
Request
curl -X DELETE https://zeodyn.com/api/v1/watched-sites/s1a2b3c4-.../thresholds/t1a2b3c4-... \
-H "Authorization: Bearer zd_live_xxxxx"Response (200 OK)
{ "deleted": true }Validation rules
conditionmust be one ofdrops_below,rises_above, orchanges_by.valuemust be an integer between 0 and 100.- When a threshold fires, a
threshold_alertwebhook is sent to all subscribed endpoints.
Combine thresholds with competitive benchmarking to monitor when competitors cross important score boundaries. For the conceptual overview, see the Thresholds guide.
Error responses
| Status | Meaning |
|---|---|
| 400 | Invalid input (e.g. unknown condition, value out of range) |
| 401 | Missing or invalid API key |
| 403 | Growth tier required |
| 404 | Watched site or threshold not found |