Skip to content
cascadehook.docs
API referenceEndpoints

Register a disabled endpoint

Registration does not perform a network request. Reuse matching endpoints before creating one; creation is not idempotent.

POST
/v1/endpoints

Registration does not perform a network request. Reuse matching endpoints before creating one; creation is not idempotent.

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.

Request Body

application/json
  1. body
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
event_types*array<>
Items1 <= items <= 100

Response Body

New disabled, unverified endpoint.

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' \  -H 'Content-Type: application/json' \  -d '{  "url": "https://receiver.example.com/webhooks",  "event_types": [    "invoice.paid"  ]}'
Example Response
{  "id": "01900000-0000-7000-8000-000000000001",  "project_id": "01900000-0000-7000-8000-000000000003",  "url": "https://receiver.example.com/webhooks",  "enabled": false,  "verified_at": null,  "has_signing_secret": false,  "event_types": [    "invoice.paid"  ],  "created_at": "2026-01-01T00:00:00Z",  "updated_at": "2026-01-01T00:00:00Z"}