--- title: Update Webhook description: url: https://theirstack.com/en/docs/api-reference/webhooks/patch_webhooks_by_id_v0 --- ## PATCH /v0/webhooks/{webhook\_id} — Update Webhook ### Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `webhook_id` | path | integer | Yes | ID of the webhook | ### Request body | Field | Type | Required | Description | | --- | --- | --- | --- | | `active_event_types` | array | No | Event types this webhook subscribes to. If None, defaults to the search type's primary event (job\_new for jobs, company\_new for companies). | | `description` | string | No | Description of the webhook | | `listening_start_time` | string | No | Date when the webhook started listening for events. If listening\_start\_time is None, the webhook will listen to all events matching the search query regardless of when they occurred. | | `search_id` | integer | Yes | ID of the search that the webhook is listening to. | | `secret` | string | No | Secret used to sign webhook payloads with HMAC-SHA256. If set, deliveries include an X-TheirStack-Signature-256 header. Omit to keep current value; set to null to remove. | | `trigger_once_per_company` | boolean | No | Only for webhook type ='job.new'. If true, Company A with 5 jobs → 1 event triggered. If false, Company A with 5 jobs → 5 events triggered Default: false | | `url` | string | Yes | URL of the webhook | ### Responses #### 200 — Successful Response | Field | Type | Required | Description | | --- | --- | --- | --- | | `active_event_types` | array | Yes | | | `created_at` | string | Yes | | | `description` | string | No | Description of the webhook | | `event_type` | enum(job\_new, company\_new, job\_closed) | Yes | Deprecated: use active\_event\_types. Primary event type derived from webhook\_type. | | `has_secret` | boolean | Yes | | | `id` | integer | Yes | | | `is_active` | boolean | Yes | | | `is_archived` | boolean | Yes | | | `listening_start_time` | string | No | Date when the webhook started listening for events. If listening\_start\_time is None, the webhook will listen to all events matching the search query regardless of when they occurred. | | `scanning_frequency` | string | No | Scanning frequency for the webhook Default: "10m" | | `search_id` | integer | Yes | ID of the search that the webhook is listening to. | | `search_name` | string | Yes | | | `team_id` | integer | Yes | | | `trigger_once_per_company` | boolean | No | Only for webhook type ='job.new'. If true, Company A with 5 jobs → 1 event triggered. If false, Company A with 5 jobs → 5 events triggered Default: false | | `updated_at` | string | Yes | | | `url` | string | Yes | URL of the webhook | | `user_id` | integer | Yes | | | `webhook_type` | enum(jobs, companies) | Yes | | #### 400 — Bad Request | Field | Type | Required | Description | | --- | --- | --- | --- | | `error` | Error | Yes | | | `request_id` | integer | No | The request id. This is useful to contact us to help you debug the issue. The request\_id won't be present in all errors. | ##### `error` | Field | Type | Required | Description | | --- | --- | --- | --- | | `code` | string | No | The error code. Eg: \`E-001\`, \`E-002\`, \`E-003\`, \`E-004\`, \`E-005\`, \`E-006\`, \`E-007\`, \`E-008\`, \`E-009\`, \`E-010\`, \`E-011\`, \`E-012\`, \`E-013\`, \`E-014\`, \`E-015\`, \`E-016\` | | `description` | string | No | The error description | | `title` | string | Yes | The error title. | #### 402 — Payment Required | Field | Type | Required | Description | | --- | --- | --- | --- | | `error` | Error | Yes | | | `request_id` | integer | No | The request id. This is useful to contact us to help you debug the issue. The request\_id won't be present in all errors. | ##### `error` | Field | Type | Required | Description | | --- | --- | --- | --- | | `code` | string | No | The error code. Eg: \`E-001\`, \`E-002\`, \`E-003\`, \`E-004\`, \`E-005\`, \`E-006\`, \`E-007\`, \`E-008\`, \`E-009\`, \`E-010\`, \`E-011\`, \`E-012\`, \`E-013\`, \`E-014\`, \`E-015\`, \`E-016\` | | `description` | string | No | The error description | | `title` | string | Yes | The error title. | #### 422 — Unprocessable Entity | Field | Type | Required | Description | | --- | --- | --- | --- | | `error` | Error | Yes | | | `request_id` | integer | No | The request id. This is useful to contact us to help you debug the issue. The request\_id won't be present in all errors. | ##### `error` | Field | Type | Required | Description | | --- | --- | --- | --- | | `code` | string | No | The error code. Eg: \`E-001\`, \`E-002\`, \`E-003\`, \`E-004\`, \`E-005\`, \`E-006\`, \`E-007\`, \`E-008\`, \`E-009\`, \`E-010\`, \`E-011\`, \`E-012\`, \`E-013\`, \`E-014\`, \`E-015\`, \`E-016\` | | `description` | string | No | The error description | | `title` | string | Yes | The error title. | #### 500 — Internal Server Error | Field | Type | Required | Description | | --- | --- | --- | --- | | `error` | Error | Yes | | | `request_id` | integer | No | The request id. This is useful to contact us to help you debug the issue. The request\_id won't be present in all errors. | ##### `error` | Field | Type | Required | Description | | --- | --- | --- | --- | | `code` | string | No | The error code. Eg: \`E-001\`, \`E-002\`, \`E-003\`, \`E-004\`, \`E-005\`, \`E-006\`, \`E-007\`, \`E-008\`, \`E-009\`, \`E-010\`, \`E-011\`, \`E-012\`, \`E-013\`, \`E-014\`, \`E-015\`, \`E-016\` | | `description` | string | No | The error description | | `title` | string | Yes | The error title. |