Update subscription (no secret)

Overview

Partially updates a subscription owned by the caller's partner — every field is optional; send only what changes. The HMAC secret cannot be changed here (use rotate-secret). delivery_kind may be switched but must not collide with the partner's other slot. Returns the updated row (no secret).

Prerequisites

  • A bearer token. Callable with Partner tokens.
  • The webhookSubscriptionId of the record you are targeting.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/partner/webhooks/{webhookSubscriptionId}/update

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.
  • Who can call it: Partner tokens.
  • findCallerSubscription enforces bundle_id === 1 and scopes by partner_company_id (404 if not owned).

Rate limit

  • No rate limit.

Path parameters

ParameterTypeRequiredDescription
webhookSubscriptionIdintegerRequiredDigits only.

Request body

  • Body (all sometimes):
FieldTypeRequiredDescription
labelstringnosometimes+required when present; max 255
webhook_urlstring (url)nourl:http,https, max 2048
is_activeboolnoenable/disable
delivery_kindstringnoimmediate | batch; unique-slot rule excludes the edited row by id — 422 on collision with the other slot
batch_interval_hoursint|nullrequired if delivery_kind=batchone of [1,2,4,6,12]
eventsarray|nullnonull/[] = all events; on immediate effective kind, batch-kind events rejected; hipages events rejected for non-hipages partners
events.*stringMust be one of the event names from the events catalog (GET /api/v1/partner/webhooks/events).
payload_modestringnofull | minimal
{
  "label": "Updated webhook label",
  "webhook_url": "https://partner.example.com/hooks/sau-v2",
  "is_active": true,
  "payload_mode": "minimal"
}

Response

200 Success · 200

{ "data": { "data": {
  "id": 3,
  "partner_company_id": 5,
  "label": "Updated webhook label",
  "webhook_url": "https://partner.example.com/hooks/sau-v2",
  "events": null,
  "payload_mode": "minimal",
  "delivery_kind": "immediate",
  "batch_interval_hours": null,
  "delivery_label": "immediate",
  "last_batch_dispatched_at": null,
  "is_active": true,
  "hmac_secret_fingerprint": "335b947fe611b6b2",
  "last_succeeded_at": null,
  "last_failed_at": null,
  "last_failure_reason": null,
  "consecutive_failure_count": 0,
  "created_at": "2026-06-16T10:25:29+00:00",
  "updated_at": "2026-06-16T10:26:02+00:00"
} } }

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
404Returned if not owned
422Returned on collision with the other slot
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/partner/webhooks/123/update" \
  --header 'Authorization: Bearer {{bearerToken}}' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"label": "Updated webhook label", "webhook_url": "https://partner.example.com/hooks/sau-v2", "is_active": true, "payload_mode": "minimal"}'

Did this page help you?