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

# Register a webhook

`POST /v1/webhooks`

## Request

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

The `secret` is returned **once** in the response — store it, we don't. Incoming deliveries are signed as `x-pricetrack-signature: sha256=<hmac(secret, timestamp + '.' + body)>`.

## Request body

- CreateWebhookBody
  - `url` string, uri, required
  - `events` WebhookEventName[]

## Response `201`

Webhook created; `secret` returned once.

- object
  - `data` object
    - `id` string, uuid
    - `url` string
    - `secret` string: HMAC signing secret. Shown once only.
    - `events` WebhookEventName[]

## Other responses

- `402`: Tier limit reached — upgrade to continue

---

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