---
title: "Register a notification route (per-event subscriptions)"
method: POST
path: "/webhooks"
---

# Register a notification route (per-event subscriptions)

`POST /webhooks`

## Request

- Base URL: `https://getsanction.com/api/v1`
- URL: `https://getsanction.com/api/v1/webhooks`
- Auth: API key in header `x-mgmt-key`

Register a public https endpoint (or a Slack incoming-webhook URL) to receive events. Deliveries are HMAC-SHA256 signed; the signing secret is shown once at creation. Loopback / private / metadata hosts are rejected. Owner-only.

## Request body

- object
  - `wallet_id` string, required
  - `url` string, uri, required: Public https endpoint, hooks.slack.com incoming webhook, or https://slack.com/archives/C… channel (interactive Approve/Deny when the Slack app is configured)
  - `events` string[]: Subscribed events; defaults applied if omitted. '*' subscribes to all.

## Response `201`

Registered; signing secret returned once

## Other responses

- `400`: Invalid or non-public URL
- `401`: Management key required

---

[API](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api.md) · [All operations](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api/revisions/c645a9e4b72d?raw)
