Create an HTTPS workflow webhook endpoint

The signing secret is returned exactly once. Verify `x-browser-workflow-signature` over `timestamp.body` and reject stale timestamps.

POST
/api/v1/browser/projects/{projectId}/environments/{environmentId}/webhooks

The signing secret is returned exactly once. Verify x-browser-workflow-signature over timestamp.body and reject stale timestamps.

Authorization

BrowserWorkflowApiKey
headerX-API-Key<token>

Project- and environment-scoped browser workflow API key.

Path Parameters

projectId*string
Formatuuid
environmentId*string
Formatuuid

Header Parameters

Idempotency-Key?string

Optional. Generate a unique value before a write and retain it for an exact-body retry; replay is free and a different body returns 409 IDEMPOTENCY_CONFLICT.

Length8 <= length <= 200

Request Body

application/json
  1. body
url*string
Match^https://
Formaturi
Lengthlength <= 2048
events*array<>
Items1 <= items <= 2

Response Body

Webhook endpoint and one-time signing secret Error body uses the documented PublicError DTO.

application/json
  1. response
webhook*
signing_secret*string
curl -X POST 'https://api.runharvester.com/api/v1/browser/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/environments/497f6eca-6276-4993-bfeb-53cbbbba6f08/webhooks' \  -H 'Content-Type: application/json' \  -d '{  "url": "https://hooks.example.com/runharvester",  "events": [    "workflow.run.completed"  ]}' \  --header "X-API-Key: ${RUNHARVESTER_BROWSER_API_KEY:?Set your Browser Workflow API key}" \  --header "Idempotency-Key: ${RUNHARVESTER_IDEMPOTENCY_KEY:?Set a unique key for this submission; reuse it for retries}"
{  "webhook": {    "id": "0f18d89e-8d50-467b-9297-7f4c84d648ae",    "url": "https://hooks.example.com/runharvester",    "events": [      "workflow.run.completed"    ],    "status": "active"  },  "signing_secret": "rhwh_example_secret"}