curl -X POST 'https://api.getivy.de/api/service/internal/webhook-subscription/update' \
  -H 'Content-Type: application/json' \
  -H 'X-Ivy-Api-Key: YOUR_API_KEY' \
  -d '{
    "subscription_id": "wsub_1234567890",
    "endpoint_url": "https://new-domain.com/webhooks/ivy",
    "event_types": [
      "checkout_session.completed",
      "payout.paid"
    ],
    "description": "Updated production webhook",
    "status": "active"
  }'
{
  "id": "wsub_1234567890",
  "endpoint_url": "https://new-domain.com/webhooks/ivy",
  "event_types": [
    "checkout_session.completed",
    "payout.paid"
  ],
  "status": "active",
  "description": "Updated production webhook",
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T15:45:00Z",
  "last_delivery": "2024-01-15T14:22:15Z",
  "delivery_count": 45,
  "failure_count": 2
}

Overview

Update an existing webhook subscription to modify its endpoint URL, event types, description, or status. You can update any combination of these fields - only the fields you include in the request will be modified.
This endpoint requires authentication using your API key in the X-Ivy-Api-Key header.

Request Parameters

subscription_id
string
required
The ID of the webhook subscription to update.
endpoint_url
string
The new URL where webhook events will be sent. Must be a valid HTTPS URL.
event_types
array
Array of event types to subscribe to. Available event types include:
  • checkout_session.completed - When a checkout session is successfully completed
  • checkout_session.expired - When a checkout session expires
  • payout.paid - When a payout is successfully processed
  • payout.failed - When a payout fails
  • refund.succeeded - When a refund is successfully processed
  • refund.failed - When a refund fails
description
string
New description for the webhook subscription to help identify its purpose.
status
string
The new status for the webhook subscription. Valid values: active, inactive.

Example Request

curl -X POST 'https://api.getivy.de/api/service/internal/webhook-subscription/update' \
  -H 'Content-Type: application/json' \
  -H 'X-Ivy-Api-Key: YOUR_API_KEY' \
  -d '{
    "subscription_id": "wsub_1234567890",
    "endpoint_url": "https://new-domain.com/webhooks/ivy",
    "event_types": [
      "checkout_session.completed",
      "payout.paid"
    ],
    "description": "Updated production webhook",
    "status": "active"
  }'

Example Response

{
  "id": "wsub_1234567890",
  "endpoint_url": "https://new-domain.com/webhooks/ivy",
  "event_types": [
    "checkout_session.completed",
    "payout.paid"
  ],
  "status": "active",
  "description": "Updated production webhook",
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T15:45:00Z",
  "last_delivery": "2024-01-15T14:22:15Z",
  "delivery_count": 45,
  "failure_count": 2
}

Partial Updates

You can update individual fields without affecting others. For example, to only change the description:
curl -X POST 'https://api.getivy.de/api/service/internal/webhook-subscription/update' \
  -H 'Content-Type: application/json' \
  -H 'X-Ivy-Api-Key: YOUR_API_KEY' \
  -d '{
    "subscription_id": "wsub_1234567890",
    "description": "Updated description only"
  }'

Error Responses

{
  "error": {
    "code": "subscription_not_found",
    "message": "Webhook subscription not found",
    "type": "not_found"
  }
}
{
  "error": {
    "code": "invalid_endpoint_url",
    "message": "The provided endpoint URL is invalid. Must be a valid HTTPS URL.",
    "type": "validation_error"
  }
}
{
  "error": {
    "code": "invalid_status",
    "message": "Invalid status value. Must be 'active' or 'inactive'.",
    "type": "validation_error"
  }
}

Status Changes

When you change a webhook subscription’s status:
  • active: Webhook events will be sent to the endpoint URL
  • inactive: Webhook events will not be sent, but the subscription is preserved
Setting a webhook to inactive is useful for temporarily disabling webhooks without deleting them.