Webhook Management
Configure where Qwik POSTs events. These endpoints use organization credentials only (no user session). For the receiving side โ envelope, signature verification, retries โ see Webhooks.
POST/partner/webhooks
๐ Org key + secret
| Field | Type | Required | Notes |
|---|---|---|---|
url | string | โ | HTTPS URL. |
events | string[] | โ | Subset to subscribe to. Empty/omitted = ALL events. Values must be from the event catalog. |
description | string | โ | Max 500 chars. |
201 ยท Response
{
"webhook": {
"id": "uuid", "partner_id": "uuid", "url": "https://your-app.example.com/qwik/webhook",
"events": ["Payment.ACH.Completed"], "is_active": true,
"description": "Production webhook", "created_at": "...", "updated_at": "...",
"secret_set": true
},
"secret": "8a2f...base64url-32-bytes...",
"message": "Store this secret securely โ it will not be shown again. Use it to verify the X-Qwik-Signature header on incoming webhook requests."
}
The
secret is shown once. Store it server-side; you need it to verify deliveries. Reads never return it (they expose only secret_set: true).GET/partner/webhooks
๐ Org key + secret
200 ยท Response
{
"webhooks": [ /* webhook objects, secret omitted */ ]
}
GET/partner/webhooks/:webhookId
๐ Org key + secret
200 ยท Response
{
"webhook": { ... }
}
404 if not found / not yours. webhookId is a UUID.
PATCH/partner/webhooks/:webhookId
๐ Org key + secret
Body โ all optional: url, events, is_active (boolean), description.
200 ยท Response
{
"webhook": { ... }
}
DELETE/partner/webhooks/:webhookId
๐ Org key + secret
200 ยท Response
{
"deleted": true
}
404 if not found.
POST/partner/webhooks/:webhookId/rotate-secret
๐ Org key + secret
Mints a new signing secret (returned once); the previous one stops verifying immediately.
200 ยท Response
{ "webhook_id": "uuid", "secret": "<new-secret>", "message": "Update your signature-verification config immediately. The previous secret is now invalid; the new one will not be shown again." }
GET/partner/webhooks/:webhookId/deliveries
๐ Org key + secret
Delivery log for debugging. Query: status (pending|delivered|failed|permanently_failed), limit (default 50, max 100), offset (default 0).
200 ยท Response
{
"deliveries": [
{
"id": "uuid", "event_type": "Payment.ACH.Completed", "event_id": "...",
"status": "failed", "attempt_count": 4, "last_attempt_at": "...",
"response_status": 500, "error_message": "non-2xx response: 500", "created_at": "..."
}
],
"pagination": { "limit": 50, "offset": 0, "total": 3 }
}