Skip to content
cascadehook.docs
API referenceEndpoints

Verify receiver ownership with a signed challenge

EMPTY BODY required: do not send {}. Install the current secret on a running public HTTPS receiver first. Receiver must verify the raw signed request and return exactly {"proof":"<base64 HMAC-SHA256>"}, using message cascadehook.verify.v1.<Webhook-Id>.<data.challenge>. One attempt per 30 seconds; respect Retry-After. Plain empty 200 is insufficient. Errors include endpoint_verification_failed (502), invalid_verification_proof (422), unsafe_endpoint_destination (422), endpoint_verification_rate_limited (429), and endpoint_verification_changed (409).

POST
/v1/endpoints/{endpoint_id}/verify

EMPTY BODY required: do not send {}. Install the current secret on a running public HTTPS receiver first. Receiver must verify the raw signed request and return exactly {"proof":""}, using message cascadehook.verify.v1..<data.challenge>. One attempt per 30 seconds; respect Retry-After. Plain empty 200 is insufficient. Errors include endpoint_verification_failed (502), invalid_verification_proof (422), unsafe_endpoint_destination (422), endpoint_verification_rate_limited (429), and endpoint_verification_changed (409).

Authorization

projectAPIKey
headerAuthorizationBearer <ch_dev_ or ch_live_ project API key>

Read CASCADEHOOK_API_KEY from the local environment. Never print keys or headers. Scope is the project selected when the key was created.

Path Parameters

endpoint_id*string
Formatuuid

Response Body

Verified endpoint. Delivery is not automatically enabled.

application/json
  1. response
id*string
Formatuuid
project_id*string
Formatuuid
url*string

HTTPS, no credentials/fragment. Maximum 2048 UTF-8 bytes. Public destination required at verification/delivery; redirects are rejected.

Match^[Hh][Tt][Tt][Pp][Ss]://
Formaturi
Lengthlength <= 2048
enabled*boolean
verified_at*|
Formatdate-time
has_signing_secret*boolean
event_types*array<>
Items1 <= items <= 100
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
Example Request
curl -X POST 'https://api.cascadehook.com/v1/endpoints/497f6eca-6276-4993-bfeb-53cbbbba6f08/verify'
Example Response
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",  "url": "http://example.com",  "enabled": true,  "verified_at": "2019-08-24T14:15:22Z",  "has_signing_secret": true,  "event_types": [    "string"  ],  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z"}