---
title: "Set your webhook configuration"
method: PUT
path: "/v1/webhook"
tags: ["Webhooks"]
---

# Set your webhook configuration

`PUT /v1/webhook`

## Request

- Base URL: `https://dataapi.reachthepeople.ai/api`
- URL: `https://dataapi.reachthepeople.ai/api/v1/webhook`
- Auth: HTTP bearer

Register the HTTPS URL we POST job events to (job.completed / job.failed). If you enable webhooks without an existing or provided secret, one is generated and returned ONCE in `secret` — store it to verify the `X-Signature` header. Each delivery is a POST with header `X-Webhook-Event` and `X-Signature: sha256=<hex>`, where the signature is the HMAC-SHA256 of the raw JSON body keyed by your secret. The body matches the WebhookEvent schema.

## Request body

- WebhookConfigUpdate
  - `url` string: Public HTTPS URL
  - `enabled` boolean
  - `secret` string: Optional signing secret. If omitted when enabling and none exists, one is generated and returned once.

## Response `200`

Webhook saved

- WebhookConfigSaved
  - `url` string
  - `enabled` boolean
  - `hasSecret` boolean
  - `secret` string: Present ONLY when a secret was just generated — store it now; it is not retrievable later.

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key

---

[API](https://skmtc.dev/salesstream/apis/data-api.md) - [All operations](https://skmtc.dev/salesstream/apis/data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/salesstream/apis/data-api/revisions/71ddbbca233d?raw)
