heruAPI
Webhooks

Update a webhook subscription

BuildingIn development for the v1 API. The contract is set; the route is not served yet.

PATCH
/webhooks/{id}

Changes only the fields sent. status: paused holds the deliveries that are waiting; status: active resumes them and releases the held ones, also when heru disabled the subscription. A validation that fails changes nothing.

Needs the webhooks:write scope.

Authorization

oauth2 webhooks:write
headerAuthorizationBearer <token>

OAuth 2.0 client credentials. Exchange your client_id and client_secret at /oauth/token of the environment for a bearer token valid for one hour. The playground of every operation asks for your own client and keeps it in your browser tab only.

Scope: webhooks:write

Path parameters

id*string

The subscription id.

Match^whk_[0-7][0-9a-hjkmnp-tv-z]{25}$

Request body

application/json
  1. body

Every field is optional; only the fields sent change. headers replaces the whole set: [] removes them all.

url?string
Formaturi
Lengthlength <= 2048
event_types?array<string>
Items1 <= items <= 20
merchant_ids?array<>
Itemsitems <= 100
description?string
Lengthlength <= 500
headers?array<>
Itemsitems <= 5
status?string

paused stops deliveries and holds them; active resumes them and releases the held ones, also after heru disabled the subscription.

Value in"active""paused"

Response body

The subscription as it is now, without secret.

application/json
  1. response
id*string
Match^whk_[0-7][0-9a-hjkmnp-tv-z]{25}$
url*string
Formaturi
description*string
event_types*array<string>
merchant_ids*array<>
status*string

active delivers; paused you set it and deliveries wait; disabled heru set it (see disabled_reason) and deliveries wait until you send status: active.

Value in"active""paused""disabled"
disabled_reason*|null
disabled_at*|null
headers*array<>
secret?string

Only in the answer of POST /webhooks and POST /webhooks/{id}/secret. Store it: it is never shown again.

Match^whsec_[A-Za-z0-9_-]{43}$
secret_last4*string
secret_rotating_until*|null
consecutive_failures*integer

Failed deliveries in a row. A 2xx resets it to zero.

failing_since*|null
environment*string
Value in"sandbox""production"
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
deliveries*

Where the delivery log of this subscription is.

curl -X PATCH 'https://api.dev.b2b.heru.app/v1/webhooks/whk_01m53g5zw414zt6vg08fqbacgm' \  -H 'Content-Type: application/json' \  -d '{  "status": "paused",  "description": "POS production (maintenance window)"}'
{  "id": "whk_01m53g5zw414zt6vg08fqbacgm",  "url": "https://partner.example.com/heru/webhooks",  "description": "POS production (maintenance window)",  "event_types": [    "invoice.stamped",    "charge.invoiced"  ],  "merchant_ids": [    "mer_01m4ra8wsyfh3s0tr4nrq3y96j"  ],  "status": "paused",  "disabled_reason": null,  "disabled_at": null,  "headers": [    {      "name": "X-Partner-Token",      "value": "****abcd"    }  ],  "secret_last4": "L2Do",  "secret_rotating_until": null,  "consecutive_failures": 0,  "failing_since": null,  "environment": "production",  "created_at": "2026-10-25T12:00:00.000Z",  "updated_at": "2026-10-26T09:12:00.000Z",  "deliveries": {    "path": "/v1/webhooks/whk_01m53g5zw414zt6vg08fqbacgm/deliveries"  }}
© 2026 Kuarto Inc. (heru)heru.appQuestions about your integration? Contact your heru account team.