List subscriptions

Lists the plans the caller holds, with the count beside them.

GET /v1/billing/subscriptions

Addresshttps://api.hanzo.ai/v1/billing/subscriptions
MethodGET
Operationget_billing_subscriptions
AuthAuthorization: Bearer $HANZO_API_KEY

Lists the plans the caller holds, with the count beside them.

It is scoped to the caller's own org, so a query cannot widen it to another customer's. An org on nothing is an empty list, not a refusal — being on no plan is an answer.

A named handler, not a closure, so zipdoc can lift this prose into the registry.

Request

GET /v1/billing/subscriptions takes no parameters and no body — the credential is the whole request.

Response

StatusBodyMeaning
200billing.Subscriptionsok
defaultproblem-detailsrefused

200 body — 28 fields.

FieldInTypeAlwaysDescription
countbodyinteger (int64)—Count is the row count beside the rows, which is the shape this address has always answered with.
subscriptionsbodybilling.Subscription[]—
subscriptions[].cancelAtPeriodEndbodyboolean—CancelAtPeriodEnd reports that the plan ends at CurrentPeriodEnd.
subscriptions[].canceledAtbodystring—CanceledAt is when it was canceled; absent when it was not.
subscriptions[].chargedCentsbodyinteger (int64)—ChargedCents is what the period in hand was actually paid, after any discount and net of refunds.
subscriptions[].createdAtbodystring—CreatedAt is when the row was written, RFC 3339.
subscriptions[].currentPeriodEndbodystring—CurrentPeriodEnd is when it ends, RFC 3339.
subscriptions[].currentPeriodStartbodystring—CurrentPeriodStart is when the period in hand began, RFC 3339.
subscriptions[].defaultPaymentMethodbodystring—DefaultPaymentMethod is the saved method a renewal would use.
subscriptions[].endedAtbodystring—EndedAt is when it ended; absent while it runs.
subscriptions[].idbodystring—ID is the subscription's own id, the one cancel and reactivate take.
subscriptions[].mrrCentsbodyinteger (int64)—MRRCents is what this subscription contributes per month — commerce's own figure, interval-normalized and multiplied by its seats, so no reader re-derives it from price and interval.
subscriptions[].planbodybilling.SubscriptionPlan—
subscriptions[].plan.currencybodystring—Currency is the ISO code the price is in, lower-cased.
subscriptions[].plan.idbodystring—ID is the plan row the subscription was opened on.
subscriptions[].plan.intervalbodystring—Interval is the billing period: "month" or "year".
subscriptions[].plan.namebodystring—Name is the plan's display name, e.g. "Max 20x".
subscriptions[].plan.pricebodyinteger (int64)—Price is what one period costs per seat, in cents, as the subscription snapshotted it: a later catalog price change does not move it.
subscriptions[].planIdbodystring—PlanID is the plan slug, e.g. "max-20x".
subscriptions[].providerTypebodystring—ProviderType is who collects it: a processor ("square"), "credit" for a plan bought with credits, "internal" or "bundle" for a row nobody paid for.
subscriptions[].quantitybodyinteger (int64)—Quantity is the seat count; a flat plan holds 1.
subscriptions[].seatsbodyinteger (int64)—Seats is the seat count the period in hand was paid for — its paid invoice's quantity, or the quantity recorded with an external period — never the row's live Quantity, which the holder may change.
subscriptions[].settledbodystring—Settled is how the period in hand was paid: "card" (a card paid all of it), "external:<processor>" (a payment recorded as collected outside commerce), "balance", "credit" or "mixed" (prepaid money).
subscriptions[].statusbodystring—Status is trialing, active, past_due, canceled or unpaid.
subscriptions[].trialEndbodystring—TrialEnd is when that trial ends; absent when there was none.
subscriptions[].trialStartbodystring—TrialStart is when a trial began; absent when there was none.
subscriptions[].updatedAtbodystring—UpdatedAt is when the row last changed, RFC 3339.
subscriptions[].userIdbodystring—UserID is the billing account that holds it: the org slug for an org's own plan, "<org>/<name>" for a member's.

Failure carries the platform error shape — see Errors.

Examples

hanzo billing subscriptions list
import { Configuration, BillingApi } from 'hanzoai';

const api = new BillingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getBillingSubscriptions();
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_subscriptions()
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.BillingAPI.GetBillingSubscriptions(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_subscriptions(&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).getBillingSubscriptions();
curl https://api.hanzo.ai/v1/billing/subscriptions \
  -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?