Webhooks

Update a webhook endpoint

PATCH /api/v1/webhooks/{webhookId}

Send enabled: true to turn an endpoint back on after it was disabled for repeated failures.

API key access
Read and write
Project permission
None — acts on your own account
Success
200 — Updated

Parameters

Path

ParameterTypeNotes
webhookId required string

Request body

JSON, with Content-Type: application/json.

FieldTypeNotes
url string (uri)
description string max 200 chars
events array of "uptime.down" | "uptime.still_down" | "uptime.recovered" | "finding.opened" | "finding.resolved" at least 1 item
projectIds array of string Empty = every project you can open
enabled boolean true turns a paused or auto-disabled endpoint back on

Example request

Replace tk_live_YOUR_KEY with your API key and the ids with your own.

curl -X PATCH 'https://trackerv2.marketingplanet.global/api/v1/webhooks/6655f9b7d6a8c0e2f4b6d801' \
  -H 'Authorization: Bearer tk_live_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "events": [
    "uptime.down",
    "uptime.recovered",
    "finding.opened"
  ]
}'

Example response

200 OK
{
  "data": {
    "id": "6655f9b7d6a8c0e2f4b6d801",
    "url": "https://hooks.acmeretail.com/tracker",
    "description": "Ops channel",
    "events": [
      "uptime.down",
      "uptime.recovered",
      "finding.opened"
    ],
    "projectIds": [
      "6650a4c2e1b3d5f7a9c1e301"
    ],
    "enabled": true,
    "disabledReason": null,
    "consecutiveFailures": 0,
    "lastDeliveryAt": "2026-10-06T09:20:44.000Z",
    "lastSuccessAt": "2026-10-06T09:20:44.000Z",
    "createdAt": "2026-09-12T08:00:00.000Z",
    "updatedAt": "2026-10-06T09:20:44.000Z"
  }
}

Response fields

FieldTypeNotes
data object
data.id string
data.url string
data.description string
data.events array of "uptime.down" | "uptime.still_down" | "uptime.recovered" | "finding.opened" | "finding.resolved"
data.projectIds array of string
data.enabled boolean
data.disabledReason string or null
data.consecutiveFailures integer
data.lastDeliveryAt string (date-time) or null
data.lastSuccessAt string (date-time) or null
data.createdAt string (date-time)
data.updatedAt string (date-time)

Errors

Besides the errors any request can return (bad or missing key, plan, scope, rate limit), this endpoint can return:

Statuserror.codeMeaning
400invalid-urlThe webhook URL is not HTTPS, contains credentials, or points at a private address.
400invalid-requestA parameter or body field is missing or invalid; error.message says which.
404not-foundThe resource does not exist or you cannot open it. Tracker does not reveal which.

Errors always look like { "error": { "code": "…", "message": "…" } }. See Errors & limits.