Register an endpoint
Register an HTTPS URL to receive signed sailing event deliveries. Write, so it needs the schedules entitlement. The signing secret is returned once here and never again: store it before you close the connection. An unrecognised event type is dropped silently rather than rejected, so read event_types back from the response. Answers 201 on success, 400 INVALID_URL when the URL is missing or not https.
A valid smcp_ key with the schedules entitlement. Reads and management on the routes below need only a valid key, so a downgraded org can still inspect and disable its endpoints.
Request body
Where we post deliveries. Must start with https://.
Event types to receive. Omit or send [] to receive every event type we emit.
Your own label. We never interpret it.
Response fields
Derived from the example response.
Whether the request succeeded.
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.
The carrier own phrasing for the event, falling back to our word for the code.
When the record was created (ISO 8601).
curl -X POST 'https://api.schedulesmcp.com/v1/webhooks' \
-H "Authorization: Bearer smcp_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://hooks.example.com/schedulesmcp","event_types":["blank_sailing","cutoff_approaching"],"description":"Sailing alerts, booking desk"}'const res = await fetch("https://api.schedulesmcp.com/v1/webhooks", {
method: "POST",
headers: {
"Authorization": "Bearer smcp_YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://hooks.example.com/schedulesmcp",
"event_types": [
"blank_sailing",
"cutoff_approaching"
],
"description": "Sailing alerts, booking desk"
})
});
const data = await res.json();import requests
res = requests.post(
"https://api.schedulesmcp.com/v1/webhooks",
headers={"Authorization": "Bearer smcp_YOUR_API_KEY"},
json={
"url": "https://hooks.example.com/schedulesmcp",
"event_types": [
"blank_sailing",
"cutoff_approaching"
],
"description": "Sailing alerts, booking desk"
},
)
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,
"created_at": "2026-08-11T09:12:04.881Z",
"secret": "whsec_3f9a1c7e5b204d8619ac0f73e26b8d45a1c9e30f7b264d58"
}
}