---
title: "Re-enable a disabled webhook"
method: POST
path: "/v1/webhooks/{webhook_id}/reactivate"
tags: ["Webhooks"]
---

# Re-enable a disabled webhook

`POST /v1/webhooks/{webhook_id}/reactivate`

## Request

- Base URL: `https://api.registrum.co.uk`
- URL: `https://api.registrum.co.uk/v1/webhooks/{webhook_id}/reactivate`
- Auth: API key in header `X-API-Key`

Re-enable a webhook that was switched off after repeated delivery failures.

A webhook is disabled automatically after 5 consecutive failed deliveries, and
we email the key's owner when that happens. Once your endpoint is accepting
requests again, call this to resume delivery: the webhook is set active and its
failure count is reset to zero. Calling it on a webhook that is already active
changes nothing and returns it as-is.

Re-enabling counts the webhook's companies against your plan's watch cap again,
so it can return a 403 if you have since created other webhooks that use the
allowance.

## Path parameters

- `webhook_id` string, required: The webhook's ID, as returned by POST /v1/webhooks when it was created.

## Response `200`

The webhook, now active with its failure count reset

- WebhookEnvelope: Response envelope for POST /v1/webhooks and GET /v1/webhooks/{webhook_id}.
  - `status` string: 'success' or 'error'
  - `data` WebhookSubscription: A webhook subscription row.
    - `id` string, required: Webhook ID (UUID). Use it with GET and DELETE /v1/webhooks/{webhook_id}
    - `api_key_id` string, nullable: ID of the API key that owns this webhook
    - `url` string, required: URL that receives signed POST deliveries when a watched company changes
    - `company_numbers` string[], required: Companies House numbers being watched
    - `events` string[], required: Event types subscribed to, e.g. `status_change`, `accounts_overdue`
    - `secret` string, required: HMAC-SHA256 signing secret for verifying the `X-Registrum-Signature` header. Store it securely
    - `is_active` boolean, required: True while the subscription is delivering
    - `created_at` string, nullable: ISO 8601 timestamp when the webhook was created
    - `last_triggered_at` string, nullable: ISO 8601 timestamp of the last delivery attempt (null if never triggered)
    - `failure_count` integer, nullable: Consecutive delivery failures recorded for this webhook
  - `cached` boolean: True if this response was served from cache rather than fetched live
  - `cache_age_seconds` integer, nullable: How many seconds ago this data was fetched from Companies House (null if not cached)
  - `fetched_at` string, nullable: ISO 8601 instant (UTC) when this data was actually fetched from Companies House. Use this, not cache_age_seconds, to show a user when the data was last checked: an age is measured at the moment this response was produced, so anything that caches the response downstream will overstate freshness by however long it held it. This instant does not drift. Null when unknown - render nothing rather than a guessed date.
  - `data_source` string: 'live' - fetched from Companies House right now; 'cached' - served from local cache (data is recent, no upstream call needed); 'cached_rate_conserved' - served from cache because the CH API budget is above 70% utilisation; data may be up to 30 days old in this state
  - `credits_used` integer: Number of API credits consumed by this request
  - `credits_remaining` integer, nullable: API credits remaining this month (null in dev mode)

## Other responses

- `401`: Missing or invalid API key
- `403`: Plan required: re-enabling would exceed your plan's webhook watch cap
- `404`: Webhook not found or does not belong to this API key
- `422`: Validation Error

---

[API](https://skmtc.dev/registrum/apis/registrum-api.md) · [All operations](https://skmtc.dev/registrum/apis/registrum-api/llms.txt) · [OpenAPI document](https://skmtc.dev/registrum/apis/registrum-api/revisions/2bf0ecf7cc02?raw)
