CoderHelm Docs
APIWebhook endpoints

Update a webhook endpoint

PUT
/api/webhooks/endpoints/{endpoint_id}

Changes the address, description, events, or turns the endpoint on or off. Fields left out keep their value. Turning an endpoint back on starts its failure count again; events missed while it was off are not sent by themselves (replay them).

Authorization

api_key webhooks
headerAuthorizationBearer <token>

A team API key, made by an admin under Settings, API keys. Send it as Authorization: Bearer chk_....

Scope: webhooks

Path Parameters

endpoint_id*string

The endpoint's id.

Request Body

application/json
  1. body

Changes to an endpoint. Only the fields sent change.

description?|

A new note.

Example"Deploy bot (staging)"
enabled?|

Turning an endpoint back on starts its failure count again.

Exampletrue
events?array<string>|

The new subscription list, or ["*"].

Example
[  "*"]
url?|

A new https:// address.

Example"https://hooks.example.com/coderhelm/v2"

Response Body

The endpoint as saved.

application/json
  1. response

A webhook endpoint. Never carries its secret.

created_at*string

When it was added.

Example"2026-10-20T09:00:00Z"
created_by*string

Who added it.

Example"lead@example.com"
description*string

A note for people: what the endpoint is for.

Example"Deploy bot"
disabled_reason*string

Why it's off: manual (turned off by a person) or failing (turned off by CoderHelm after 5 days of failed deliveries). Empty while on.

Example""
enabled*boolean

Off: nothing is sent (tests still are).

Exampletrue
events*array<string>

Event types it receives; ["*"] is every event, including types added later.

Example
[  "run.completed",  "run.failed"]
failing_since?|

The first failed delivery since the last success.

Examplenull
id*string

ep_ and a ULID.

Example"ep_01jbendpt4a7b0c3d6e9f2g5h8"
last_failure_at?|

The last failed attempt.

Example"2026-10-25T08:02:11.004Z"
last_success_at?|

The last delivered attempt.

Example"2026-10-26T14:31:48.120Z"
previous_secret_expires_at?|

While a rotated-out secret still signs too, when it stops.

Example"2026-10-27T09:00:00Z"
secret_hint*string

The last characters of the signing secret.

Example"whsec_…Q2c="
updated_at*string

When it last changed.

Example"2026-10-20T09:00:00Z"
url*string

Where events are POSTed. Always https://.

Example"https://hooks.example.com/coderhelm"
curl -X PUT 'https://api.coderhelm.com/api/webhooks/endpoints/ep_01jbendpt4a7b0c3d6e9f2g5h8' \  -H "Authorization: Bearer $CODERHELM_API_KEY" \  -H 'Content-Type: application/json' \  -d '{}'
{  "created_at": "2026-10-20T09:00:00Z",  "created_by": "lead@example.com",  "description": "Deploy bot",  "disabled_reason": "",  "enabled": true,  "events": [    "run.completed",    "run.failed"  ],  "failing_since": null,  "id": "ep_01jbendpt4a7b0c3d6e9f2g5h8",  "last_failure_at": "2026-10-25T08:02:11.004Z",  "last_success_at": "2026-10-26T14:31:48.120Z",  "previous_secret_expires_at": "2026-10-27T09:00:00Z",  "secret_hint": "whsec_…Q2c=",  "updated_at": "2026-10-20T09:00:00Z",  "url": "https://hooks.example.com/coderhelm"}
Edit on GitHub