Register an endpoint
Register an HTTPS URL to receive signed event deliveries. 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.
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 schema
10 fields
Derived from the example response, nested as the JSON is.
The response contract this build answers, as a date. Pin it in your client and nothing in the shape below moves under you.
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.
When the record was created (ISO 8601).
Signing secret, returned ONLY on creation. Store it then: we keep a hash, so it cannot be shown again.
curl -X POST 'https://api.trackingmcp.com/v1/webhooks' \
-H "Authorization: Bearer tmcp_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://hooks.example.com/trackingmcp","event_types":["api_change_announced"],"description":"Integration alerts, on-call channel"}'const res = await fetch("https://api.trackingmcp.com/v1/webhooks", {
method: "POST",
headers: {
"Authorization": "Bearer tmcp_YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://hooks.example.com/trackingmcp",
"event_types": [
"api_change_announced"
],
"description": "Integration alerts, on-call channel"
})
});
const data = await res.json();import requests
res = requests.post(
"https://api.trackingmcp.com/v1/webhooks",
headers={"Authorization": "Bearer tmcp_YOUR_API_KEY"},
json={
"url": "https://hooks.example.com/trackingmcp",
"event_types": [
"api_change_announced"
],
"description": "Integration alerts, on-call channel"
},
)
data = res.json() {
"api_version": "2026-08-04",
"ok": true,
"data": {
"id": "3f1c9a4e-7b52-4f0e-9a41-2c9d5e6b8a10",
"url": "https://example.com/navo-docs-capture",
"event_types": [],
"description": "Docs capture, staging only",
"active": true,
"created_at": "2026-08-19T15:07:46.481165+00:00",
"secret": "whsec_0000000000000000000000000000000000000000000000000"
}
}