curl -X PATCH https://api.liddie.io/api/v1/me/webhook \
--cookie "<dashboard session>" \
-H 'Content-Type: application/json' \
-d '{"webhookUrl":"https://example.com/liddie/webhook"}'
// Dashboard-session endpoint: send your dashboard JWT as a Bearer token
const res = await fetch('https://api.liddie.io/api/v1/me/webhook', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${dashboardJwt}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ webhookUrl: 'https://example.com/liddie/webhook' }),
})
Webhooks
Set webhook URL
Set or clear the Liddie webhook URL that receives every payment event. HTTPS is enforced and internal or private-network addresses are rejected.
PATCH
/
api
/
v1
/
me
/
webhook
curl -X PATCH https://api.liddie.io/api/v1/me/webhook \
--cookie "<dashboard session>" \
-H 'Content-Type: application/json' \
-d '{"webhookUrl":"https://example.com/liddie/webhook"}'
// Dashboard-session endpoint: send your dashboard JWT as a Bearer token
const res = await fetch('https://api.liddie.io/api/v1/me/webhook', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${dashboardJwt}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ webhookUrl: 'https://example.com/liddie/webhook' }),
})
Points all your payment events at one URL. Send an empty string to clear it. Two rules protect you here: HTTPS is enforced, and internal addresses are rejected, so events can’t be aimed at private network targets.
The delivery format and event catalog are in the Webhooks & IPN guide.
Who can call this
Dashboard only — API keys can’t configure webhooks. Send your dashboard JWT (browser session) as a Bearer token, with team rolemerchant_admin or merchant_member plus the webhooks:manage permission. Rate limit: 10 requests per minute. See the Authentication guide.
Body parameters
string
required
The URL that will receive webhook events (max 2048 characters). Must use HTTPS and must not point to internal addresses. Pass an empty string (
"") to clear the configured URL.curl -X PATCH https://api.liddie.io/api/v1/me/webhook \
--cookie "<dashboard session>" \
-H 'Content-Type: application/json' \
-d '{"webhookUrl":"https://example.com/liddie/webhook"}'
// Dashboard-session endpoint: send your dashboard JWT as a Bearer token
const res = await fetch('https://api.liddie.io/api/v1/me/webhook', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${dashboardJwt}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ webhookUrl: 'https://example.com/liddie/webhook' }),
})
After changing the URL, read it back with Get webhook config to confirm what’s stored.
Errors
| Status | Body | Why |
|---|---|---|
| 400 | INVALID_WEBHOOK_URL — "Webhook URL must use HTTPS" | The URL is not HTTPS. HTTPS is enforced. |
| 400 | "Webhook URL must not point to internal addresses" | Private and internal network targets are rejected. |
| 400 | {"ok":false,"error":{"code":"INVALID_WEBHOOK_URL","message":"Webhook URL must not embed credentials"}} | The URL carries a user:password@ component. |
See also
- Get webhook config — read back the stored URL and secret status.
- Rotate webhook secret — generate the signing secret your endpoint verifies with.
- Webhooks & IPN — delivery format, event catalog and verification recipe.