curl --request GET --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/webhook-events" \
--header "Authorization: Bearer ${AMLOK_API_KEY}" \
--header "Accept: application/json"import os
import requests
base_url = os.environ["AMLOK_API_BASE_URL"].rstrip("/")
headers = {'Accept': 'application/json'}
headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]
response = requests.request(
"GET", base_url + "/v1/webhook-events",
headers=headers, timeout=30, allow_redirects=False,
)
response.raise_for_status()
print(response.json())
const baseUrl = process.env.AMLOK_API_BASE_URL;
const apiKey = process.env.AMLOK_API_KEY;
if (!baseUrl || !apiKey) throw new Error("Configure AMLOK_API_BASE_URL and AMLOK_API_KEY");
const headers = {
"Accept": "application/json"
};
headers.Authorization = `Bearer ${apiKey}`;
const response = await fetch(baseUrl.replace(/\/$/, "") + "/v1/webhook-events", {
method: "GET", headers,
redirect: "error", signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`AMLOK returned HTTP ${response.status}`);
console.log(await response.json());{
"data": [
{
"id": "evt_example",
"type": "verification.completed",
"created_at": "2026-10-23T14:00:00Z",
"schema_version": "1.4.2",
"resource_type": "verification",
"resource_id": "ver_example",
"resource_version": 2,
"data": {
"status": "in_review"
}
}
],
"page": {
"has_more": false,
"next_cursor": null,
"limit": 100
},
"meta": {
"request_id": "req_example",
"schema_version": "1.4.2",
"generated_at": "2026-10-23T14:00:00Z",
"data_status": "complete"
}
}List webhook events
Discover generated events even when none reached your receiver. Filter by creation time and type; order by (created_at, id), ascending. First page freezes the upper boundary; cursor retains it. Retention and retained_from are provided by configuration. A requested interval earlier than retained_from returns 410 event_history_expired, never a misleading empty success. Reconcile current state using checkpoints and the change feed after expiry. Event availability still requires the key’s underlying resource read scopes. Polling events is read-only and does not redeliver them.
curl --request GET --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/webhook-events" \
--header "Authorization: Bearer ${AMLOK_API_KEY}" \
--header "Accept: application/json"import os
import requests
base_url = os.environ["AMLOK_API_BASE_URL"].rstrip("/")
headers = {'Accept': 'application/json'}
headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]
response = requests.request(
"GET", base_url + "/v1/webhook-events",
headers=headers, timeout=30, allow_redirects=False,
)
response.raise_for_status()
print(response.json())
const baseUrl = process.env.AMLOK_API_BASE_URL;
const apiKey = process.env.AMLOK_API_KEY;
if (!baseUrl || !apiKey) throw new Error("Configure AMLOK_API_BASE_URL and AMLOK_API_KEY");
const headers = {
"Accept": "application/json"
};
headers.Authorization = `Bearer ${apiKey}`;
const response = await fetch(baseUrl.replace(/\/$/, "") + "/v1/webhook-events", {
method: "GET", headers,
redirect: "error", signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`AMLOK returned HTTP ${response.status}`);
console.log(await response.json());{
"data": [
{
"id": "evt_example",
"type": "verification.completed",
"created_at": "2026-10-23T14:00:00Z",
"schema_version": "1.4.2",
"resource_type": "verification",
"resource_id": "ver_example",
"resource_version": 2,
"data": {
"status": "in_review"
}
}
],
"page": {
"has_more": false,
"next_cursor": null,
"limit": 100
},
"meta": {
"request_id": "req_example",
"schema_version": "1.4.2",
"generated_at": "2026-10-23T14:00:00Z",
"data_status": "complete"
}
}webhooks:read
Discover generated events even when none reached your receiver. Filter by creation time and type; order by (created_at, id), ascending. First page freezes the upper boundary; cursor retains it. Retention and retained_from are provided by configuration. A requested interval earlier than retained_from returns 410 event_history_expired, never a misleading empty success. Reconcile current state using checkpoints and the change feed after expiry. Event availability still requires the key’s underlying resource read scopes. Polling events is read-only and does not redeliver them.
Product scope · Processing lifecycle · ErrorsAuthorizations
Server-to-server API key bound to exactly one workspace, institution tenant and environment. No caller-supplied workspace override is accepted. Do not use in public browser code.
Query Parameters
Default 100; maximum 200.
1 <= x <= 200Opaque cursor bound to filters and the first page snapshot. Do not change filters during pagination.
1Inclusive UTC lower boundary.
Exclusive UTC upper boundary.
Event type.
business.created, person.created, connection.updated, consent.updated, sync.completed, sync.failed, verification.updated, verification.completed, document.processed, lien_search.completed, lien_search.failed, lien.updated, application.updated, decision.created, loan.updated, repayment.updated, attributes.calculated, risk_snapshot.created, monitor.updated, alert.created, alert.updated, workflow.completed, workflow.failed, resource.deleted, billing.usage.posted, billing.report.updated, billing.statement.finalized