---
title: "Create Webhook"
method: POST
path: "/webhooks"
tags: ["public-api"]
---

# Create Webhook

`POST /webhooks`

## Request

- Base URL: `https://api.trakkr.ai`
- URL: `https://api.trakkr.ai/webhooks`
- Auth: HTTP bearer

Register a new webhook endpoint to receive event notifications.

Supported events: visibility_changed, report_completed,
competitor_added, citation_gained, citation_lost.

## Request body

- WebhookCreateBody
  - `url` string, required: HTTPS endpoint URL
  - `events` string[], required: Event types to subscribe to
  - `brand_id` string, uuid, required: Brand UUID
  - `auth_type` 'none' | 'bearer' | 'basic' | 'api_key', nullable: Authentication: "none", "bearer", "basic", or "api_key"
  - `auth_token` string, nullable: Bearer token (if auth_type is bearer)
  - `auth_username` string, nullable
  - `auth_password` string, nullable
  - `api_key_header` string, nullable
  - `api_key_value` string, nullable
  - `signing_secret` string, nullable: Custom signing secret (auto-generated if omitted)
  - `headers` object, nullable
  - `payload_template` object, nullable

## Response `200`

Successful Response

- WebhookPublicResponse
  - `id` string, required
  - `object` string
  - `url` string, required
  - `events` string[], required
  - `brand_id` string, required
  - `provider` string, required
  - `active` boolean, required
  - `signing_secret` string, nullable
  - `created_at` string, required

## Other responses

- `401`: Missing, malformed, or expired credentials
- `402`: The current plan does not fund this operation
- `403`: Invalid credentials, missing brand access, or insufficient role
- `422`: Validation Error
- `429`: Rate limit exceeded
- `500`: The operation failed
- `503`: Authentication, entitlement, or a required dependency is temporarily unavailable

---

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