curl --request GET \
--url https://intentleads.si/api/v1/webhooks \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://intentleads.si/api/v1/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://intentleads.si/api/v1/webhooks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"endpoints": [
{
"id": "5b1d0a7e-3c2f-4e0b-9a51-2f6c8d7e9a10",
"url": "https://app.example.com/hooks/intent-leads",
"description": "CRM sync",
"events": "*",
"receives": [
"removals",
"visitors"
],
"enabled": true,
"status": "ok",
"failed_attempts": 0,
"failing_since": null,
"next_retry_at": null,
"last_attempt_at": "2026-11-12T09:15:02.118Z",
"last_status": 200,
"last_error": null,
"last_success_at": "2026-11-12T09:15:02.118Z",
"waiting": {
"removals": 0
},
"legacy": false,
"created_at": "2026-11-11T14:00:00.000Z",
"updated_at": "2026-11-11T14:00:00.000Z"
}
]
}{
"error": "unauthorized",
"message": "Send a valid API key as: Authorization: Bearer il_live_…"
}{
"error": "internal_error",
"message": "Something went wrong. Try again."
}List webhook endpoints
Webhook endpoints receive events as they happen, signed: removals (people you exported who asked to be removed) and visitors (people identified on your websites). Use one endpoint for everything ("events": "*") or one per event. Webhooks never buy anyone. See the webhooks guide for payloads, signatures and retries.
Secrets aren’t listed. Works with any key.
Free. This doesn’t spend your balance.
curl --request GET \
--url https://intentleads.si/api/v1/webhooks \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://intentleads.si/api/v1/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://intentleads.si/api/v1/webhooks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"endpoints": [
{
"id": "5b1d0a7e-3c2f-4e0b-9a51-2f6c8d7e9a10",
"url": "https://app.example.com/hooks/intent-leads",
"description": "CRM sync",
"events": "*",
"receives": [
"removals",
"visitors"
],
"enabled": true,
"status": "ok",
"failed_attempts": 0,
"failing_since": null,
"next_retry_at": null,
"last_attempt_at": "2026-11-12T09:15:02.118Z",
"last_status": 200,
"last_error": null,
"last_success_at": "2026-11-12T09:15:02.118Z",
"waiting": {
"removals": 0
},
"legacy": false,
"created_at": "2026-11-11T14:00:00.000Z",
"updated_at": "2026-11-11T14:00:00.000Z"
}
]
}{
"error": "unauthorized",
"message": "Send a valid API key as: Authorization: Bearer il_live_…"
}{
"error": "internal_error",
"message": "Something went wrong. Try again."
}Authorizations
Headers
Only with an organization key: the workspace to act in (its id; ?workspace=<id> works too). Lanes, leads, exports, lists, websites and webhooks live in workspaces. Without it, an organization key acts in its only workspace, or gets 400 workspace_required (with the list of workspaces) when it has several. Workspace keys don't need it. On keys, team and activity it switches from the organization's own to that workspace's.