---
title: "Register webhook"
method: POST
path: "/v1/webhooks"
tags: ["Webhooks"]
---

# Register webhook

`POST /v1/webhooks`

## Request

- Base URL: `https://api.briefgate.dev`
- URL: `https://api.briefgate.dev/v1/webhooks`
- Auth: HTTP bearer

Register a new webhook endpoint. BriefGate will POST a signed JSON payload to the URL when the specified events occur. Supported events: item.submitted, intake.completed, client.viewed, chase.bounced, intake.stalled, intake.overdue, intake.archived. Set "format" to "slack" or "discord" to deliver a ready-made chat message to an incoming webhook of that service instead of the BriefGate envelope; the URL host is checked against the chosen format.

## Request body

- CreateWebhook
  - `url` string, uri, required
  - `events` string[], required
  - `format` 'raw' | 'slack' | 'discord'

## Response `201`

Webhook registered

- object
  - `id` string
  - `url` string, uri
  - `events` string[]
  - `format` 'raw' | 'slack' | 'discord'
  - `active` boolean
  - `created_at` string, date-time
  - `secret` string: HMAC-SHA256 signing secret — returned only on creation.

## Other responses

- `400`: Invalid request — malformed body or query parameters
- `401`: Missing or invalid API key
- `422`: Validation error — the body shape is correct but values are invalid

---

[API](https://skmtc.dev/briefgate/apis/briefgate-api.md) · [All operations](https://skmtc.dev/briefgate/apis/briefgate-api/llms.txt) · [OpenAPI document](https://skmtc.dev/briefgate/apis/briefgate-api/revisions/b21afed4748b?raw)
