curl --request GET --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/billing/account?snapshot_id=billing_snapshot_example" \
--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/billing/account?snapshot_id=billing_snapshot_example",
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/billing/account?snapshot_id=billing_snapshot_example", {
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": "billing_account_example",
"object": "billing_account",
"record_version": 1,
"created_at": "2026-10-23T14:00:00Z",
"updated_at": "2026-10-23T14:00:00Z",
"workspace_id": "wsp_example",
"currency": "CAD",
"agreement_id": "agr_example",
"agreement_version": "3",
"minimum_monthly_commitment": "1000.00",
"payment_for_12_months": "12000.00",
"term_start": "2026-10-01T00:00:00Z",
"term_end": "2027-10-01T00:00:00Z",
"renewal_payment_at": "2027-10-01T00:00:00Z",
"credit_type": "prepaid_service_credits",
"outflow_policy": "product_usage_or_final_cancellation_refund",
"refund_policy": "full_unused_balance_on_final_cancellation",
"access": "reporting_only",
"portal_controls": [
"payment_methods",
"automatic_top_ups",
"account_cancellation"
],
"funding_methods": [
"card",
"bank_account"
],
"default_auto_top_up_threshold": "200.00",
"minimum_top_up_threshold": "200.00",
"payment_frequency": "every_12_months",
"cancellation_notice_days": 0,
"closure_timing": "end_of_request_month",
"processing_cutoff": "immediate_on_cancellation",
"status": "active",
"cancellation_requested_at": null,
"scheduled_closure_at": null,
"minimum_top_up_amount": "500.00",
"auto_top_up_enabled": true,
"auto_top_up_threshold": "200.00",
"auto_top_up_amount": "500.00",
"auto_top_up_balance_basis": "available_credits",
"refund_destination": "saved_portal_bank_account",
"policy_version": "unified-workspace-credits",
"snapshot_id": "billing_snapshot_example"
},
"meta": {
"request_id": "req_example",
"schema_version": "1.4.2",
"generated_at": "2026-10-23T14:00:00Z",
"data_status": "complete"
}
}Retrieve billing account
Read the unified workspace billing policy, CAD 200 default automatic top-up trigger, and CAD 500 minimum customer-funded top-up. The client portal manages card or bank-account payment methods, automatic top-ups and cancellation; enterprise clients can also use their dedicated account manager. The public API provides reporting only. Cancellation is available at any time with no notice period. Processing, usage deductions, and upcoming top-ups stop immediately when cancellation is submitted or set by the account manager. Cancel unfinished work without another debit. Full closure is at the end of the request month, with an immediate refund of all unused credits, including promotional credits, to the saved portal bank account. Data is deleted after the month closes and necessary final information is generated. Used credits are non-refundable.
Required scope: billing:read. The API key is bound to exactly one workspace, institution and environment. There is no workspace override; this binding applies to every read and export.
curl --request GET --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/billing/account?snapshot_id=billing_snapshot_example" \
--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/billing/account?snapshot_id=billing_snapshot_example",
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/billing/account?snapshot_id=billing_snapshot_example", {
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": "billing_account_example",
"object": "billing_account",
"record_version": 1,
"created_at": "2026-10-23T14:00:00Z",
"updated_at": "2026-10-23T14:00:00Z",
"workspace_id": "wsp_example",
"currency": "CAD",
"agreement_id": "agr_example",
"agreement_version": "3",
"minimum_monthly_commitment": "1000.00",
"payment_for_12_months": "12000.00",
"term_start": "2026-10-01T00:00:00Z",
"term_end": "2027-10-01T00:00:00Z",
"renewal_payment_at": "2027-10-01T00:00:00Z",
"credit_type": "prepaid_service_credits",
"outflow_policy": "product_usage_or_final_cancellation_refund",
"refund_policy": "full_unused_balance_on_final_cancellation",
"access": "reporting_only",
"portal_controls": [
"payment_methods",
"automatic_top_ups",
"account_cancellation"
],
"funding_methods": [
"card",
"bank_account"
],
"default_auto_top_up_threshold": "200.00",
"minimum_top_up_threshold": "200.00",
"payment_frequency": "every_12_months",
"cancellation_notice_days": 0,
"closure_timing": "end_of_request_month",
"processing_cutoff": "immediate_on_cancellation",
"status": "active",
"cancellation_requested_at": null,
"scheduled_closure_at": null,
"minimum_top_up_amount": "500.00",
"auto_top_up_enabled": true,
"auto_top_up_threshold": "200.00",
"auto_top_up_amount": "500.00",
"auto_top_up_balance_basis": "available_credits",
"refund_destination": "saved_portal_bank_account",
"policy_version": "unified-workspace-credits",
"snapshot_id": "billing_snapshot_example"
},
"meta": {
"request_id": "req_example",
"schema_version": "1.4.2",
"generated_at": "2026-10-23T14:00:00Z",
"data_status": "complete"
}
}billing:read
Read the unified workspace billing policy, CAD 200 default automatic top-up trigger, and CAD 500 minimum customer-funded top-up. The client portal manages card or bank-account payment methods, automatic top-ups and cancellation; enterprise clients can also use their dedicated account manager. The public API provides reporting only. Cancellation is available at any time with no notice period. Processing, usage deductions, and upcoming top-ups stop immediately when cancellation is submitted or set by the account manager. Cancel unfinished work without another debit. Full closure is at the end of the request month, with an immediate refund of all unused credits, including promotional credits, to the saved portal bank account. Data is deleted after the month closes and necessary final information is generated. Used credits are non-refundable.
Required scope: billing:read. The API key is bound to exactly one workspace, institution and environment. There is no workspace override; this binding applies to every read and export.
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
Reuse an immutable snapshot from this workspace. Omit to use a current snapshot. Cursors bind this value; unknown snapshots return 404 and conflicting cursor parameters return 400.