Returns the plan and seat counts for the caller's OWN org, resolved from the…
Returns the plan and seat counts for the caller's OWN org, resolved from the VERIFIED team session token — never a client header.
GET /v1/team/billing/plan
| Address | https://api.hanzo.ai/v1/team/billing/plan |
| Method | GET |
| Operation | get_team_billing_plan |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Returns the plan and seat counts for the caller's OWN org, resolved from the VERIFIED team session token — never a client header. Seats and guests are the org's distinct active human members (a bot member is not a seat); the plan comes from the licensing entitlement and is empty when that read is unavailable, so the page shows an honest dash rather than a fabricated tier. A caller with no verified session gets 401, and a real seat-read failure is a 502 rather than a false "0 members".
Request
GET /v1/team/billing/plan takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | planInfo | ok |
200 body — 6 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
active | body | boolean | — | Active is whether that plan's entitlement is live. |
guestLimit | body | integer | — | GuestLimit is the plan's team.guests cap, when the plan carries one. |
guests | body | integer | — | Guests is how many of those seats are guests. |
plan | body | string | — | Plan is the licensed plan id, empty when it cannot be resolved here — an honest dash on the page, never a fabricated tier. |
seats | body | integer | — | Seats is the org's distinct active human members. |
upgradeUrl | body | string | — | UpgradeURL is where the page sends a caller who wants a bigger plan. |
Failure carries the platform error shape — see Errors.
Examples
hanzo team billing planimport { Configuration, TeamApi } from 'hanzoai';
const api = new TeamApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getTeamBillingPlan();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import TeamApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = TeamApi(client).get_team_billing_plan()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.TeamAPI.GetTeamBillingPlan(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, team_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = team_api::get_team_billing_plan(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.TeamApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new TeamApi(client).getTeamBillingPlan();curl https://api.hanzo.ai/v1/team/billing/plan \
-H "Authorization: Bearer $HANZO_API_KEY"Tool team, op get_team_billing_plan — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "team",
"arguments": {
"op": "get_team_billing_plan",
"input": {}
}
}
}'How is this guide?