curl --request GET --fail-with-body --max-time 30 \
"${AMLOK_API_BASE_URL}/v1/billing/rate-cards?snapshot_id=billing_snapshot_example&limit=100" \
--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/rate-cards?snapshot_id=billing_snapshot_example&limit=100",
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/rate-cards?snapshot_id=billing_snapshot_example&limit=100", {
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());List historical rate cards
Read immutable rate-card versions, including published and negotiated rates, workload limits and agreement references. A pricing change creates a new card and supersedes_id; historical usage keeps its original rate_card_id. The singular rate-card route selects the card effective at the snapshot time. effective_to is the exclusive scheduled end, if known when issued; later supersession does not rewrite old cards. Order by effective_from then id. Return only versions known at the selected snapshot.
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/rate-cards?snapshot_id=billing_snapshot_example&limit=100" \
--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/rate-cards?snapshot_id=billing_snapshot_example&limit=100",
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/rate-cards?snapshot_id=billing_snapshot_example&limit=100", {
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());billing:read
Read immutable rate-card versions, including published and negotiated rates, workload limits and agreement references. A pricing change creates a new card and supersedes_id; historical usage keeps its original rate_card_id. The singular rate-card route selects the card effective at the snapshot time. effective_to is the exclusive scheduled end, if known when issued; later supersession does not rewrite old cards. Order by effective_from then id. Return only versions known at the selected snapshot.
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
Return the card effective at this UTC instant, no later than the selected snapshot.
Filter by agreement reference.
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.
Page size; default 100, maximum 200.
1 <= x <= 200Opaque cursor bound to filters and a stable snapshot.