Answers the caller's billing accounts: the org itself, its currency, when it…
Answers the caller's billing accounts: the org itself, its currency, when it was opened, and the caller's own standing in it.
GET /v1/billing/accounts
| Address | https://api.hanzo.ai/v1/billing/accounts |
| Method | GET |
| Operation | get_billing_accounts |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Answers the caller's billing accounts: the org itself, its currency, when it was opened, and the caller's own standing in it.
The standing is the caller's, resolved from the validated principal here and sent to the store rather than looked up there — the membership roster is IAM's and commerce keeps none, so a callee that answered "what role is this" would be inventing it. An anonymous read gets the account with no role rather than an implied membership.
Scoped to the caller's own org, which is the whole tenancy story: there is no org field on the wire and none on the input.
A named handler, not a closure, so zipdoc can lift this prose into the registry.
Request
GET /v1/billing/accounts takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | BillingAccount[] | ok |
200 body — 7 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
[].createdAt | body | string | — | |
[].currency | body | string | — | |
[].id | body | string | — | |
[].name | body | string | — | |
[].orgId | body | string | — | |
[].orgName | body | string | — | |
[].role | body | string | — | Role is the caller's standing. |
Failure carries the platform error shape — see Errors.
Examples
hanzo billing accounts listimport { Configuration, BillingApi } from 'hanzoai';
const api = new BillingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getBillingAccounts();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import BillingApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = BillingApi(client).get_billing_accounts()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.BillingAPI.GetBillingAccounts(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, billing_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = billing_api::get_billing_accounts(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.BillingApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new BillingApi(client).getBillingAccounts();curl https://api.hanzo.ai/v1/billing/accounts \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches billing through the billing tool, which names its 9 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "get_billing_balance"
}
}
}'How is this guide?