---
title: "Create or rotate a partner webhook endpoint"
method: POST
path: "/api/v1/partner/webhooks"
---

# Create or rotate a partner webhook endpoint

`POST /api/v1/partner/webhooks`

## Request

- Base URL: `https://streetproof.com`
- URL: `https://streetproof.com/api/v1/partner/webhooks`
- Auth: HTTP bearer

Stores a partner webhook endpoint for StreetPulse events. Returns the signing secret once; StreetProof stores only a hash. Delivery remains queued until verification and delivery workers are enabled.

## Request body

- PartnerWebhookRequest
  - `endpoint_url` string, uri, required
  - `event_types` string[]
  - `city` string: Optional city slug filter.

## Response `200`

Existing webhook endpoint updated and signing secret rotated

- PartnerWebhookResponse
  - `schema` 'com.streetproof.partner_webhook.v1'
  - `ok` boolean
  - `webhook` object
  - `signing_secret` string: Shown once. StreetProof stores only a hash.
  - `note` string

## Other responses

- `201`: Webhook endpoint created
- `401`: Missing, invalid, or inactive API key.
- `403`: Client is disabled or portal access is not enabled.
- `404`: Resource not found (or entity opted out).
- `409`: Webhook endpoint limit reached.

---

[API](https://skmtc.dev/streetproof/apis/streetproof-physical-brand-index-api.md) · [All operations](https://skmtc.dev/streetproof/apis/streetproof-physical-brand-index-api/llms.txt) · [OpenAPI document](https://skmtc.dev/streetproof/apis/streetproof-physical-brand-index-api/revisions/81072718cfa2?raw)
