---
title: "Update webhook"
full: true
_openapi:
  method: PATCH
  toc: []
  structuredData:
    headings: []
    contents:
      - content: "Updates a webhook by its ID"
_apiData:
  document: "https://reloop.sh/api/webhook/openapi/json"
  operationData: [{"path":"/api/webhook/v1/{webhook_id}","method":"patch"}]
  parameterList: [{"name":"webhook_id","type":"string","required":true,"description":"Webhook ID","location":"path","minLength":1},{"name":"description","type":"string","required":false,"description":"Webhook description","location":"body","minLength":1,"maxLength":255},{"name":"name","type":"string","required":false,"description":"Webhook name","location":"body","minLength":1,"maxLength":255},{"name":"url","type":"string","required":false,"description":"Webhook URL","location":"body","pattern":"^https?:\\/\\/.+"},{"name":"secret","type":"string","required":false,"description":"Webhook secret for HMAC signature verification","location":"body","minLength":8,"maxLength":255},{"name":"status","type":"\"active\" | \"paused\" | \"disabled\"","required":false,"description":"","location":"body","enumValues":["active","paused","disabled"]},{"name":"customHeaders","type":"object","required":false,"description":"Custom headers to include in webhook requests","location":"body"},{"name":"rateLimitEnabled","type":"boolean","required":false,"description":"Enable rate limiting","location":"body"},{"name":"maxRequestsPerMinute","type":"number","required":false,"description":"Maximum requests per minute","location":"body","minimum":1,"maximum":1000},{"name":"maxRetries","type":"number","required":false,"description":"Maximum retry attempts","location":"body","minimum":0,"maximum":10},{"name":"retryBackoffMultiplier","type":"number","required":false,"description":"Retry backoff multiplier","location":"body","minimum":1,"maximum":10},{"name":"filteringOptions","type":"object","required":false,"description":"Event filtering options","location":"body"}]
  responseMap: {"200":{"description":"Response for status 200","schema":{"id":"wh_123456789","name":"Payments Webhook","url":"https://example.com/webhooks/reloop","secret":"***masked***","status":"active","customHeaders":{"x-source":"reloop"},"rateLimitEnabled":true,"maxRequestsPerMinute":60,"maxRetries":3,"retryBackoffMultiplier":2,"filteringOptions":null,"lastTriggeredAt":"2026-03-29T10:00:00Z","successCount":10,"failureCount":1,"consecutiveFailures":0,"createdAt":"2026-03-29T10:00:00Z","updatedAt":"2026-03-29T10:00:00Z"}},"400":{"description":"Response for status 400","schema":{"name":"Newsletter","message":"Contact already exists","status":0,"data":{"why":"A contact with this email already exists in your organization.","fix":"Use a different email address or update the existing contact instead.","link":"https://reloop.sh/docs/api/contacts"}}},"401":{"description":"Response for status 401","schema":{"name":"Newsletter","message":"Contact already exists","status":0,"data":{"why":"A contact with this email already exists in your organization.","fix":"Use a different email address or update the existing contact instead.","link":"https://reloop.sh/docs/api/contacts"}}},"404":{"description":"Response for status 404","schema":{"name":"Newsletter","message":"Contact already exists","status":0,"data":{"why":"A contact with this email already exists in your organization.","fix":"Use a different email address or update the existing contact instead.","link":"https://reloop.sh/docs/api/contacts"}}},"409":{"description":"Response for status 409","schema":{"name":"Newsletter","message":"Contact already exists","status":0,"data":{"why":"A contact with this email already exists in your organization.","fix":"Use a different email address or update the existing contact instead.","link":"https://reloop.sh/docs/api/contacts"}}}}
  codeSamples:
    - id: node
      lang: javascript
      label: Node.js
      source: |-
        import { Reloop } from "reloop-email";
        
        const reloop = new Reloop({ apiKey: "rl_123456789" });
        
        const { webhook, webhookError } = await reloop.webhook.update("wh_123456789", {
          status: "paused",
        });
        if (webhookError) throw webhookError;
    - id: curl
      lang: bash
      label: cURL
      source: |-
        curl -X PATCH https://reloop.sh/api/webhook/v1/wh_123456789 \\
          -H "x-api-key: rl_123456789" \\
          -H "Content-Type: application/json" \\
          -d '{"status":"paused"}'
    - id: python
      lang: python
      label: Python
      source: |-
        # Webhook SDK support coming soon
    - id: php
      lang: php
      label: PHP
      source: |-
        // Webhook SDK support coming soon
    - id: java
      lang: java
      label: Java
      source: |-
        // Webhook SDK support coming soon
    - id: dotnet
      lang: csharp
      label: .NET
      source: |-
        // Webhook SDK support coming soon
    - id: go
      lang: go
      label: Go
      source: |-
        // Webhook SDK support coming soon
    - id: rust
      lang: rust
      label: Rust
      source: |-
        // Webhook SDK support coming soon
    - id: ruby
      lang: ruby
      label: Ruby
      source: |-
        # Webhook SDK support coming soon
    - id: elixir
      lang: elixir
      label: Elixir
      source: |-
        # Webhook SDK support coming soon
---
> For the complete documentation index, see [llms-docs.txt](/llms-docs.txt) or the site index [llms.txt](/llms.txt). Full docs corpus: [llms-full-docs.txt](/llms-full-docs.txt). Prefer markdown URLs (append `.md`) for agent consumption. Product skill: [skill.md](/skill.md).


{/* This file was generated by the OpenAPI doc generator. Do not edit this file directly. Run `bun run generate:api-docs` to regenerate. */}

<APIPage />
