Recipe
Send job events out only when that boundary is worth it.
Webhooks are useful for automation, but they deliberately leave the local instance. This recipe treats that as a product decision: register a target, test it, document it, and keep the secret outside screenshots.
- Path
- /webhooks
- Events
- job.completed, job.failed
- Egress
- Explicit public HTTP(S)
Shell
webhook-test.sh
hook="$(
curl -sS -X POST "$VOXNOTCH_URL/webhooks" \
-H "X-API-Key: $VOXNOTCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.example.test/voxnotch",
"events": ["job.completed", "job.failed"],
"secret": "replace-with-a-long-random-secret"
}'
)"
hook_id="$(printf '%s' "$hook" | jq -r '.id')"
curl -sS -X POST "$VOXNOTCH_URL/webhooks/$hook_id/test" \
-H "X-API-Key: $VOXNOTCH_API_KEY"Replace the URL with a real endpoint before running. Keep the shared secret in your password manager or deployment secret store.
Boundary
A webhook is not local-first by default.
The transcript can stay local while the event leaves. That may be acceptable for a build pipeline, an internal dashboard, or a ticketing hook, but it should be named in your launch evidence.
Do not include transcript text, private notes, or secrets in screenshots that document the proof.