curl --request POST --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/lien-searches" \
--header "Authorization: Bearer ${AMLOK_API_KEY}" \
--header "Accept: application/json" \
--header 'Idempotency-Key: idem_example_1001' \
--header 'Content-Type: application/json' \
--data '{
"subject_id": "biz_example",
"debtor_name": "Example Manufacturing Inc.",
"debtor_type": "business",
"search_type": "name",
"jurisdictions": [
"US-DE"
],
"processing_context": {
"product": "insights",
"workflow_run_id": "wfr_example"
}
}'import os
import requests
base_url = os.environ["AMLOK_API_BASE_URL"].rstrip("/")
headers = {'Accept': 'application/json',
'Idempotency-Key': 'idem_example_1001',
'Content-Type': 'application/json'}
headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]
response = requests.request(
"POST", base_url + "/v1/lien-searches",
headers=headers, timeout=30, allow_redirects=False,
json={'subject_id': 'biz_example',
'debtor_name': 'Example Manufacturing Inc.',
'debtor_type': 'business',
'search_type': 'name',
'jurisdictions': ['US-DE'],
'processing_context': {'product': 'insights',
'workflow_run_id': 'wfr_example'}},
)
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",
"Idempotency-Key": "idem_example_1001",
"Content-Type": "application/json"
};
headers.Authorization = `Bearer ${apiKey}`;
const response = await fetch(baseUrl.replace(/\/$/, "") + "/v1/lien-searches", {
method: "POST", headers,
redirect: "error", signal: AbortSignal.timeout(30000),
body: JSON.stringify({
"subject_id": "biz_example",
"debtor_name": "Example Manufacturing Inc.",
"debtor_type": "business",
"search_type": "name",
"jurisdictions": [
"US-DE"
],
"processing_context": {
"product": "insights",
"workflow_run_id": "wfr_example"
}
}),
});
if (!response.ok) throw new Error(`AMLOK returned HTTP ${response.status}`);
console.log(await response.json());{
"data": {
"id": "lis_example",
"object": "lien_search",
"subject_id": "biz_example",
"created_at": "2026-10-22T13:00:00Z",
"updated_at": "2026-10-22T14:00:00Z",
"record_version": 1,
"source_refs": [],
"data_status": "pending",
"missing_fields": [],
"schema_version": "1.4.2",
"debtor_name": "Example Manufacturing Inc.",
"debtor_type": "business",
"search_type": "name",
"jurisdictions_requested": [
"US-DE"
],
"jurisdictions_completed": [],
"status": "queued",
"result_count": 0,
"lien_ids": [],
"stop_reason": null,
"processing_context": {
"product": "insights",
"workflow_run_id": "wfr_example"
}
},
"meta": {
"request_id": "req_example",
"schema_version": "1.4.2",
"generated_at": "2026-10-23T14:00:00Z",
"data_status": "pending"
}
}Start lien search
Run a lien search with explicit jurisdiction and debtor scope.
Required scope: liens:search. Adapter resolves provider business/person context; no filing or perfection action. Once account cancellation is submitted, processing and usage deductions stop immediately. Reject new operational commands with 409 invalid_state; pending work is cancelled without another debit. Read-only reporting remains available until workspace deletion. This is a stage of an authorized Insights or Signal workflow. processing_context is required; unrelated, completed, unpaid, cancelled or unentitled contexts return 409 invalid_state. It creates no separate AMLOK charge. The orchestrator deduplicates equivalent stage work within the parent. Accepted commands have a durable request receipt. Full response replay lasts 24 hours; afterward the same key and target return 409 idempotency_result_expired without re-execution. Different payloads return 409 idempotency_conflict. Use GET /v1/request-receipts/lookup to find the original resource. The fingerprint includes the resolved target path and intended payload; a key used on another target is rejected rather than replayed onto it. Pre-execution validation or insufficient-credit rejection creates no accepted receipt.
curl --request POST --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/lien-searches" \
--header "Authorization: Bearer ${AMLOK_API_KEY}" \
--header "Accept: application/json" \
--header 'Idempotency-Key: idem_example_1001' \
--header 'Content-Type: application/json' \
--data '{
"subject_id": "biz_example",
"debtor_name": "Example Manufacturing Inc.",
"debtor_type": "business",
"search_type": "name",
"jurisdictions": [
"US-DE"
],
"processing_context": {
"product": "insights",
"workflow_run_id": "wfr_example"
}
}'import os
import requests
base_url = os.environ["AMLOK_API_BASE_URL"].rstrip("/")
headers = {'Accept': 'application/json',
'Idempotency-Key': 'idem_example_1001',
'Content-Type': 'application/json'}
headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]
response = requests.request(
"POST", base_url + "/v1/lien-searches",
headers=headers, timeout=30, allow_redirects=False,
json={'subject_id': 'biz_example',
'debtor_name': 'Example Manufacturing Inc.',
'debtor_type': 'business',
'search_type': 'name',
'jurisdictions': ['US-DE'],
'processing_context': {'product': 'insights',
'workflow_run_id': 'wfr_example'}},
)
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",
"Idempotency-Key": "idem_example_1001",
"Content-Type": "application/json"
};
headers.Authorization = `Bearer ${apiKey}`;
const response = await fetch(baseUrl.replace(/\/$/, "") + "/v1/lien-searches", {
method: "POST", headers,
redirect: "error", signal: AbortSignal.timeout(30000),
body: JSON.stringify({
"subject_id": "biz_example",
"debtor_name": "Example Manufacturing Inc.",
"debtor_type": "business",
"search_type": "name",
"jurisdictions": [
"US-DE"
],
"processing_context": {
"product": "insights",
"workflow_run_id": "wfr_example"
}
}),
});
if (!response.ok) throw new Error(`AMLOK returned HTTP ${response.status}`);
console.log(await response.json());{
"data": {
"id": "lis_example",
"object": "lien_search",
"subject_id": "biz_example",
"created_at": "2026-10-22T13:00:00Z",
"updated_at": "2026-10-22T14:00:00Z",
"record_version": 1,
"source_refs": [],
"data_status": "pending",
"missing_fields": [],
"schema_version": "1.4.2",
"debtor_name": "Example Manufacturing Inc.",
"debtor_type": "business",
"search_type": "name",
"jurisdictions_requested": [
"US-DE"
],
"jurisdictions_completed": [],
"status": "queued",
"result_count": 0,
"lien_ids": [],
"stop_reason": null,
"processing_context": {
"product": "insights",
"workflow_run_id": "wfr_example"
}
},
"meta": {
"request_id": "req_example",
"schema_version": "1.4.2",
"generated_at": "2026-10-23T14:00:00Z",
"data_status": "pending"
}
}liens:search
Run a lien search with explicit jurisdiction and debtor scope.
Required scope: liens:search. Adapter resolves provider business/person context; no filing or perfection action. Once account cancellation is submitted, processing and usage deductions stop immediately. Reject new operational commands with 409 invalid_state; pending work is cancelled without another debit. Read-only reporting remains available until workspace deletion. This is a stage of an authorized Insights or Signal workflow. processing_context is required; unrelated, completed, unpaid, cancelled or unentitled contexts return 409 invalid_state. It creates no separate AMLOK charge. The orchestrator deduplicates equivalent stage work within the parent. Accepted commands have a durable request receipt. Full response replay lasts 24 hours; afterward the same key and target return 409 idempotency_result_expired without re-execution. Different payloads return 409 idempotency_conflict. Use GET /v1/request-receipts/lookup to find the original resource. The fingerprint includes the resolved target path and intended payload; a key used on another target is rejected rather than replayed onto it. Pre-execution validation or insufficient-credit rejection creates no accepted receipt.
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.
Headers
Optional caller correlation ID; the response includes AMLOK request_id.
Reuse for retries of the same intended command and identical payload. Retention: 24 hours.
Body
Parent must belong to this workspace. Same-subject stages need no association. Only person KYC may target a different subject: supply an active subject_association_id linking that person to the parent business. Insights requires an unfinished authorized root run; Signal requires an active paid period. Stage scope, consent, association and workload are checked on every attempt. The parent business remains the billing and workload subject. No standalone service or extra charge.
- Option 1
- Option 2
Show child attributes
Show child attributes
Debtor context.
1Exact legal search name.
1Business or person.
business, person Enabled name, identifier, VIN or serial search mode.
name, identifier, vin, serial Explicit requested search jurisdictions.
1Required for identifier, VIN or serial search modes.
1Response
Run a lien search with explicit jurisdiction and debtor scope. Accepted work is not yet complete.