wire docs

Update a webhook endpoint

Changes the URL, the subscribed events, or pauses/resumes delivery. Only the fields you send change. - `url` — on an endpoint that was never verified the URL is replaced at once. On a verified endpoint the new URL is **staged**: events keep going to the old URL until the new one passes verification from the dashboard. - `enabled_events` — replaces the whole list. - `status` — `disabled` pauses delivery, `enabled` resumes it. Setting `enabled` does not skip verification: an unverified endpoint still receives nothing. **Errors:** `400 webhook_url_invalid`, `400 enabled_events_invalid`, `400 parameter_invalid` (`status` not `enabled`/`disabled`), `404 resource_missing`.

POST/v1/webhook_endpoints/{id}

Authorization

bearerAuth
AuthorizationBearer <token>

Secret API key as a bearer token: Authorization: Bearer sk_live_…. Test keys (sk_test_…) are refused with 401 test_mode_unavailable. Keys are issued per project in the dashboard. Never expose a secret key in browser or mobile code.

In: header

Path Parameters

id*string

Webhook endpoint id (we_…).

Header Parameters

Idempotency-Key*string

Required on every POST and DELETE (missing → 400 parameter_missing; longer than 255 characters → 400 parameter_invalid). Use one stable key per logical operation, e.g. your order id plus the action. A retry with the same key and the same body returns the recorded response (header Idempotent-Replayed: true) instead of acting twice. The same key with a different body or path → 409 idempotency_key_in_use. While the first request is still running, a duplicate gets 409 idempotency_in_flight — wait a moment and retry. Successful (2xx) and declined (402) responses are recorded for 48 hours; other errors are not, so a retry after fixing a 400 runs normally. Keys are scoped to the API key's project.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Send only the fields to change.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/webhook_endpoints/we_t5kz2m7qx3wn4vbc6rjy2dfa6h" \  -H "Idempotency-Key: order-1001-create" \  -H "Content-Type: application/json" \  -d '{    "status": "disabled"  }'
{
  "id": "we_t5kz2m7qx3wn4vbc6rjy2dfa6h",
  "object": "webhook_endpoint",
  "url": "https://yourshop.mn/webhooks/wire",
  "enabled_events": [
    "*"
  ],
  "status": "disabled",
  "livemode": true,
  "created": 1791770400
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_missing",
    "message": "amount is required",
    "param": "amount",
    "request_id": "req_8f3a1c9e5b7d2f4a6c0e9b1d"
  }
}

{
  "error": {
    "type": "api_error",
    "code": "test_mode_unavailable",
    "message": "test keys are not accepted by this API; use a live secret key",
    "request_id": "req_8f3a1c9e5b7d2f4a6c0e9b1d"
  }
}

{
  "error": {
    "type": "invalid_request_error",
    "code": "resource_missing",
    "message": "no such payment_intent",
    "request_id": "req_8f3a1c9e5b7d2f4a6c0e9b1d"
  }
}