Skip to content
VoxNotch

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.