Update an endpoint
Change the URL, the subscription, the label or the enabled state. Send only the fields you want to change. Setting active to true also resets failure_count to zero, which is how you bring back an endpoint we auto-disabled. A url that is not https is ignored rather than rejected, so read the returned url back. Answers 404 NOT_FOUND for an unknown id.
Counted: 1 call when the request succeeds; refusals and errors are free. Needs SchedulesMCP connected to your account. The event deliveries we send are free. See how calls are counted.
Path parameters
Endpoint id.
Request body
New URL. Ignored unless it starts with https://.
Replaces the subscription outright. Unrecognised names are dropped. Accepted values: blank_sailing, cutoff_approaching, sailing_slipped and reliability_drop.
New label.
Enable or disable. True also clears failure_count.
Response schema
7 fields
Derived from the example response, nested as the JSON is.
Whether the request succeeded.
data
The payload. Everything an endpoint returns sits under this key.
Stable identifier for the record. On the tracking endpoints this is the container UUID, except on a portfolio summary row, where it is the container number.
Where we POST the events.
The events this endpoint receives. Anything not listed is not delivered.
The carrier own phrasing for the event, falling back to our word for the code.
False while the endpoint is paused. A paused endpoint keeps its secret and its history.
Errors
Every refusal is { "ok": false, "error": { "code", "message" } }. Branch on the code, and log the message. No refusal or error is counted as a call.
No endpoint with this id on your account. Not counted.
The key is missing, unknown, revoked or past its own expiry date. Not counted.
SchedulesMCP is not connected to your account, or its access period has ended. To stop deliveries without it, delete the endpoint. Not counted.
The monthly call limit or the key's daily limit is spent. Retry-After gives the seconds until it resets. Not counted.
Too many requests in a short window. Wait Retry-After seconds. Not counted.
curl -X PATCH 'https://api.schedulesmcp.com/v1/webhooks/3f1c9a4e-7b52-4f0e-9a41-2c9d5e6b8a10' \
-H "Authorization: Bearer smcp_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"active":true}'const res = await fetch("https://api.schedulesmcp.com/v1/webhooks/3f1c9a4e-7b52-4f0e-9a41-2c9d5e6b8a10", {
method: "PATCH",
headers: {
"Authorization": "Bearer smcp_YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"active": true
})
});
const data = await res.json();import requests
res = requests.patch(
"https://api.schedulesmcp.com/v1/webhooks/3f1c9a4e-7b52-4f0e-9a41-2c9d5e6b8a10",
headers={"Authorization": "Bearer smcp_YOUR_API_KEY"},
json={
"active": True
},
)
data = res.json() {
"ok": true,
"data": {
"id": "3f1c9a4e-7b52-4f0e-9a41-2c9d5e6b8a10",
"url": "https://hooks.example.com/schedulesmcp",
"event_types": ["blank_sailing", "cutoff_approaching"],
"description": "Sailing alerts, booking desk",
"active": true
}
}