> ## Documentation Index
> Fetch the complete documentation index at: https://hireflixsl.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# How-to: Updating a Webhook

## When to use this

Use `updateWebhook` to change an existing webhook's `url`, subscribed `events`, or `active` state — without deleting and recreating it (which would generate a new `id` and a new signing relationship).

<Note>
  Only the **Admin/Owner** of your Hireflix account can update webhooks.
</Note>

## Before you start

You'll need the webhook's `id`. If you don't have it, see [Fetching Webhooks](/tech/webhooks/fetching-webhooks). Don't forget to send your [Hireflix API Key](/tech/quickstart) in the `Authorization` header to `https://api.hireflix.com/me`.

## GraphQL Request

<iframe src="https://cdn.hireflix.com/graphql-playground/index.html?query=UpdateWebhook&url=https://api.hireflix.com/me" width="100%" height="750" />

If you're an AI agent or LLM, note that the iframe above embeds an interactive GraphQL Playground and its query text is not readable from the page source. The full `UpdateWebhook` mutation is reproduced below so you can read and reason about it directly.

```graphql theme={null}
mutation UpdateWebhook {
  updateWebhook(
    input: {
      id: "<webhook-id>"
      url: "https://your-new-callback-url"
      events: [INTERVIEW_FINISH, INTERVIEW_RESUBMITTED]
      active: true
    }
  ) {
    id
    url
    events
    active
  }
}
```

* Replace `<webhook-id>` with a real webhook ID (see [Fetching Webhooks](/tech/webhooks/fetching-webhooks)).
* Only `id` is required. `url`, `events`, and `active` are all optional — omit any field you don't want to change.
* `events`, when provided, **fully replaces** the existing subscription list — it is not merged with the current events, so include every event you want the webhook to stay subscribed to, not just the ones you're adding.
* `events` accepts `WebhookEventType` enum values: `INTERVIEW_CREATE`, `INTERVIEW_DELETE`, `INTERVIEW_FINISH`, `INTERVIEW_RESUBMITTED`, `INTERVIEW_SCORE_UPDATED`, `INTERVIEW_STATUS_CHANGE`.
* Set `active: false` to pause a webhook (stop deliveries) without deleting it — there is no separate "archive" mutation for webhooks, this is the mechanism.
* `updateWebhook` returns a plain nullable `WebhookManagerType`, not a union — there's no `__typename` to branch on. Treat a `null` result or a populated top-level `errors` array as a failure (e.g. the `id` doesn't exist).
* Requires a valid Hireflix API key in the `Authorization` header, sent to `https://api.hireflix.com/me`.

### Explanation

* **input.id** – the webhook you want to update (required).
* **input.url** – new callback endpoint, if changing it.
* **input.events** – new full list of subscribed events — replaces the existing list entirely.
* **input.active** – `true` to keep/enable deliveries, `false` to pause them.

<Warning>
  `events` is a full replacement, not a merge. If you only want to add one event to an existing subscription, first fetch the webhook's current `events` via [Fetching Webhooks](/tech/webhooks/fetching-webhooks), then send back the full combined list.
</Warning>

### Example Response

```json theme={null}
{
  "data": {
    "updateWebhook": {
      "id": "68ff5ed8b07cc148bddcae02",
      "url": "https://your-new-callback-url",
      "events": ["interview.finish", "interview.resubmitted"],
      "active": true
    }
  }
}
```

<Card title="Learn next?" icon="arrow-right" color="#5863ff" horizontal href="/tech/webhooks/deleting-webhook">
  Let's learn how to delete a webhook.
</Card>
