cURL
curl --request POST --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/borrowers" \
--header "Authorization: Bearer ${AMLOK_API_KEY}" \
--header 'Accept: application/json' \
--header 'Idempotency-Key: createBorrower-synthetic-0042' \
--header 'Content-Type: application/json' \
--data '{"type":"business","business":{"legal_name":"Synthetic Borrower Inc.","incorporation_country":"CA","client_reference":"LOS-B-0042"}}'import os
import requests
headers = {'Accept': 'application/json', 'Idempotency-Key': 'createBorrower-synthetic-0042', 'Content-Type': 'application/json'}
headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]
response = requests.request('POST', os.environ["AMLOK_API_BASE_URL"] + '/v1/borrowers', headers=headers, json={'type': 'business', 'business': {'legal_name': 'Synthetic Borrower Inc.', 'incorporation_country': 'CA', 'client_reference': 'LOS-B-0042'}}, timeout=30, allow_redirects=False)
response.raise_for_status()
print(response.json())
const headers = {"Accept": "application/json", "Idempotency-Key": "createBorrower-synthetic-0042", "Content-Type": "application/json"};
headers.Authorization = `Bearer ${process.env.AMLOK_API_KEY}`;
const response = await fetch(process.env.AMLOK_API_BASE_URL + "/v1/borrowers", {
method: "POST", headers, redirect: "error", signal: AbortSignal.timeout(30000),
body: JSON.stringify({"type": "business", "business": {"legal_name": "Synthetic Borrower Inc.", "incorporation_country": "CA", "client_reference": "LOS-B-0042"}})
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());
{
"data": {
"id": "bor_synthetic",
"type": "business",
"subject_id": "biz_synthetic",
"created_at": "2026-11-06T12:00:00Z",
"client_reference": "LOS-B-0042",
"profile": {
"type": "business",
"business": {
"legal_name": "Synthetic Borrower Inc.",
"incorporation_country": "CA",
"client_reference": "LOS-B-0042"
}
}
},
"meta": {
"request_id": "req_synthetic",
"schema_version": "1.0.0",
"environment": "sandbox"
}
}{
"error": {
"code": "validation_error",
"message": "Validation error.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "unauthenticated",
"message": "Unauthenticated.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "insufficient_credits",
"message": "Insufficient credits.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "forbidden",
"message": "Forbidden.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "not_found",
"message": "Not found.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "idempotency_conflict",
"message": "Idempotency conflict.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "cursor_expired",
"message": "Cursor expired.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "payload_too_large",
"message": "payload too large",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "unsupported_media_type",
"message": "unsupported media type",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "validation_error",
"message": "Validation error.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limited.",
"retryable": true,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "temporarily_unavailable",
"message": "Temporarily unavailable.",
"retryable": true,
"request_id": "req_synthetic",
"field": null
}
}Borrowers
Create borrower
Register a business or consumer borrower. Registration records institution-supplied identity; it does not assert successful KYB or KYC.
POST
/
v1
/
borrowers
cURL
curl --request POST --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/borrowers" \
--header "Authorization: Bearer ${AMLOK_API_KEY}" \
--header 'Accept: application/json' \
--header 'Idempotency-Key: createBorrower-synthetic-0042' \
--header 'Content-Type: application/json' \
--data '{"type":"business","business":{"legal_name":"Synthetic Borrower Inc.","incorporation_country":"CA","client_reference":"LOS-B-0042"}}'import os
import requests
headers = {'Accept': 'application/json', 'Idempotency-Key': 'createBorrower-synthetic-0042', 'Content-Type': 'application/json'}
headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]
response = requests.request('POST', os.environ["AMLOK_API_BASE_URL"] + '/v1/borrowers', headers=headers, json={'type': 'business', 'business': {'legal_name': 'Synthetic Borrower Inc.', 'incorporation_country': 'CA', 'client_reference': 'LOS-B-0042'}}, timeout=30, allow_redirects=False)
response.raise_for_status()
print(response.json())
const headers = {"Accept": "application/json", "Idempotency-Key": "createBorrower-synthetic-0042", "Content-Type": "application/json"};
headers.Authorization = `Bearer ${process.env.AMLOK_API_KEY}`;
const response = await fetch(process.env.AMLOK_API_BASE_URL + "/v1/borrowers", {
method: "POST", headers, redirect: "error", signal: AbortSignal.timeout(30000),
body: JSON.stringify({"type": "business", "business": {"legal_name": "Synthetic Borrower Inc.", "incorporation_country": "CA", "client_reference": "LOS-B-0042"}})
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());
{
"data": {
"id": "bor_synthetic",
"type": "business",
"subject_id": "biz_synthetic",
"created_at": "2026-11-06T12:00:00Z",
"client_reference": "LOS-B-0042",
"profile": {
"type": "business",
"business": {
"legal_name": "Synthetic Borrower Inc.",
"incorporation_country": "CA",
"client_reference": "LOS-B-0042"
}
}
},
"meta": {
"request_id": "req_synthetic",
"schema_version": "1.0.0",
"environment": "sandbox"
}
}{
"error": {
"code": "validation_error",
"message": "Validation error.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "unauthenticated",
"message": "Unauthenticated.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "insufficient_credits",
"message": "Insufficient credits.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "forbidden",
"message": "Forbidden.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "not_found",
"message": "Not found.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "idempotency_conflict",
"message": "Idempotency conflict.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "cursor_expired",
"message": "Cursor expired.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "payload_too_large",
"message": "payload too large",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "unsupported_media_type",
"message": "unsupported media type",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "validation_error",
"message": "Validation error.",
"retryable": false,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limited.",
"retryable": true,
"request_id": "req_synthetic",
"field": null
}
}{
"error": {
"code": "temporarily_unavailable",
"message": "Temporarily unavailable.",
"retryable": true,
"request_id": "req_synthetic",
"field": null
}
}Register a business or consumer borrower. Registration records institution-supplied identity; it does not assert successful KYB or KYC. All IDs and cursors must belong to the authorized workspace and environment. Required scope: borrowers:write.
Examples use synthetic IDs. Replace them with values returned by your environment.
Authorizations
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
Stable for one intended command and its retries, scoped to key workspace/environment and operation. Mismatched body returns 409. Full response replay 24 hours; durable receipt remains.
Minimum string length:
1Sandbox-only deterministic test scenario on borrower creation, persisted for that borrower. On other operations or any Live request, reject before side effects with 400 sandbox_only. Omit for happy_path.
Available options:
happy_path, source_reauthorization, document_required, missing_financial_input, restricted_report, provider_failure, insufficient_credits, monitoring_alert, payment_return, export_failure Body
application/json