Create webhook endpoint
Add a single pre-verified outbound webhook endpoint to a dashboard.
POST /app/integrations/webhooks/outbound/endpoints
Creates one pre-verified webhook endpoint. Admin-trusted — no verification email is sent.
Requires the admin or subscriber role and the integrations feature entitlement.
Request
See API Basics for required headers.
Body
| Field | Type | Required | Description |
|---|---|---|---|
dashboardId | uuid | Yes | Target dashboard |
url | string | Yes | Absolute HTTPS endpoint URL (max 2048 chars). Must use https:// on port 443 with no embedded credentials. Must be publicly reachable. |
managementEmail | string | Yes | Management contact email (max 254 chars). Receives verify/manage flows for public endpoints and delivery-failure alerts. |
componentIds | uuid[] | Yes | At least one component on that dashboard |
locked | boolean | No | Admin-managed flag. When true, blocks dashboard self-service subscribe/manage. Default: false. |
Sample request
curl -X POST https://api.statusdashboard.com/app/integrations/webhooks/outbound/endpoints \
-H "Authorization: Bearer bcf847abf5c6:def456" \
-H "Content-Type: application/json" \
-d '{
"dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"url": "https://hooks.example.com/status",
"managementEmail": "ops@acme.com",
"componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"],
"locked": false
}'Sample response
Status: 201 Created
The create response includes the full url and the signing secret once. Subsequent list/update responses expose only urlDisplay and never re-return the secret. Every event delivery is signed with X-SD-Signature using this secret (see Outbound Webhooks — Signing).
{
"endpoint": {
"channel": "webhook",
"dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"dashboardName": "Acme Status",
"urlHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"url": "https://hooks.example.com/status",
"urlDisplay": "hooks.example.com/status",
"managementEmail": "ops@acme.com",
"verified": true,
"verifiedAt": "2026-06-01T14:22:00.000Z",
"paused": false,
"locked": false,
"suppressed": false,
"componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"],
"consecutiveFailures": 0,
"createdAt": "2026-06-01T14:22:00.000Z",
"updatedAt": "2026-06-01T14:22:00.000Z"
},
"signingSecret": "whout_a1b2c3d4e5f6…"
}Error responses
| Status | When |
|---|---|
400 | Invalid body, invalid URL, or component not on dashboard |
403 | Requires admin or subscriber role, integrations feature disabled, or unique-endpoint organization limit exceeded |
404 | Dashboard not found |
409 | Endpoint already subscribed on this dashboard |

