List accounts — GET /v1/billing/accounts

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

Addresshttps://api.hanzo.ai/v1/billing/accounts
MethodGET
Operationget_billing_accounts
AuthAuthorization: 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

StatusBodyMeaning
200billing.BillingAccount[]ok
defaultproblem-detailsrefused

200 body — 7 fields.

FieldInTypeAlwaysDescription
[].createdAtbodystring—
[].currencybodystring—
[].idbodystring—
[].namebodystring—
[].orgIdbodystring—
[].orgNamebodystring—
[].rolebodystring—Role is the caller's standing.

Failure carries the platform error shape — see Errors.

Examples

hanzo billing accounts list
import { 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 := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.BillingAPI.GetBillingAccounts(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::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.setBearerToken(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"

MCP reaches billing through the billing tool, which names its 39 operations with its own verbs — this one among them, under a name only MCP 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": "list_billing_accounts"
         }
       }
     }'

Billing API · All Hanzo APIs · Interactive reference

Was this page useful?