Tenant billing
Billing ledger
Balance ledger entries, cursor-paginated; limit clamps to [1, 100]. The response is wrapped in a {code, data, message} envelope; the fields below live under data.
GET
/v1/billing/ledgerKey request parameters
| Parameter | Type | Description |
|---|---|---|
cursor | string | Opaque cursor from previous response |
limit | integer | Defaults to 50. |
Key response parameters
| Parameter | Type | Description |
|---|---|---|
items | LedgerEntry[] | Ledger entries |
items[].id | uuid | Entry identifier |
items[].entry_type | string | Entry type, e.g. charge, payment, refund, manual_credit, manual_adjustment |
items[].amount | decimal string | Signed amount |
items[].currency | string | ISO 4217 |
items[].occurred_at | datetime | ISO 8601 UTC |
next_cursor | string | Pass back as cursor; omitted when there is no next page |
has_more | boolean | Whether another page may exist |
Integration examples
Replace the API key and model ID in these examples with your values.
cURL
curl "https://hashbidx.ai/v1/billing/ledger?limit=20" \
-H "Authorization: Bearer <YOUR_API_KEY>"Python
import httpx
resp = httpx.get(
"https://hashbidx.ai/v1/billing/ledger",
params={"limit": 20},
headers={"Authorization": "Bearer <YOUR_API_KEY>"},
)
resp.raise_for_status()
print(resp.json())Node.js
const resp = await fetch("https://hashbidx.ai/v1/billing/ledger?limit=20", {
headers: { Authorization: "Bearer <YOUR_API_KEY>" },
});
console.log(await resp.json());Go
req, _ := http.NewRequest("GET",
"https://hashbidx.ai/v1/billing/ledger?limit=20", nil)
req.Header.Set("Authorization", "Bearer <YOUR_API_KEY>")
resp, err := http.DefaultClient.Do(req)Rust
let resp = reqwest::Client::new()
.get("https://hashbidx.ai/v1/billing/ledger")
.query(&[("limit","20")])
.bearer_auth("<YOUR_API_KEY>")
.send().await?;If the response includes X-Request-Id, include it when troubleshooting an issue.