HYBRID-CHAINDEVELOPERS
DOCUMENTATIONv2
GET

Customer billing

List products

/api/v2/billing/products
AUTHENTICATIONBearer token · billing:readAUTHORITATIVE OWNERbilling-serviceCONTRACT AUTHORITYGenerated Rust OpenAPISTATUSSource ready · production listed

PURPOSE + BUSINESS CONTEXT

List active plans and non-expiring credit top-ups with exact minor-unit prices, currency, interval, and granted credit units.

WHEN THIS CALL IS USEFUL

Call this before offering a plan or credit top-up so the client uses the active catalog's exact minor-unit price, currency, interval, and granted-credit terms.

OUTCOME · Discover

What changes

Read-only projection; it grants no mutation, settlement, traffic, or authority change.

WHY IT MATTERS

  • Gives people and agents a contract-backed way to discover products.
  • Lets clients distinguish commercial catalog terms, available credits, metered events, pending reconciliation, subscription state, and financial settlement before presenting spend or availability.

ISOLATION + AUTHORITY

Workspace, product, price, currency, credit grant, allowance, credit pool, subscription, usage event, pending event, invoice, payment, and settlement authorities remain distinct. A displayed balance or product does not reserve credits, purchase service, move money, settle an invoice, or authorize another domain action.

BEFORE YOU CALL

  • Authenticate at the documented boundary: bearer+scope.
  • Use the live OpenAPI schema as the authority for the exact request shape and response model.
  • Resolve the authenticated workspace, active billing period, product or subscription context, currency precision, credit-pool order, and pending reconciliation posture.

WHAT TO DO NEXT

  • Compare the exact minor-unit price, currency, interval, granted credits, and active status before presenting a product choice.
  • Use the separately authorized checkout or subscription contract for purchase; catalog visibility creates no reservation or payment.

AGENT GUIDANCE

  • Use products only for the purpose and lifecycle stage described by this operation; do not treat it as authority for an adjacent action.
  • Use the live OpenAPI schema as the authority for the exact request shape and response model.
  • Preserve credit quantities and minor-unit prices exactly; distinguish granted, available, committed, consumed, pending, expired, reconciled, invoiced, paid, and settled states.
  • Use response links and canonical identifiers instead of constructing internal service URLs or scraping the website.
MACHINE CONTRACT

The exact deployed parameters, schemas, responses, security requirements, and Hybrid-Chain agent metadata are authoritative at this operation's production OpenAPI JSON Pointer. The readable tables below add integration guidance; the deployed OpenAPI controls if guidance and the machine contract ever differ.

Open the authoritative production contract

EXTENDED INTEGRATION GUIDANCE

Readable request and response reference

Examples illustrate integration intent; the referenced OpenAPI operation and component schemas define the executable shape.

PARAMETERS

Headers, path, query, and body

NAMELOCATIONPRESENCETYPE / RULES / PURPOSE
AuthorizationheaderRequired

Bearer tokenCredential containing the billing:read scope.EXAMPLEBearer hc_live_…

RESPONSES

Status and payload examples

200Publicly selectable plans, credit top-ups, and the free allowance expressed through the authenticated billing boundary.Read completed · JSON RESPONSE+
{
  "plans": [
    {
      "product_id": "price_pro_monthly",
      "code": "PRO",
      "name": "Pro",
      "description": "Monthly event credits.",
      "product_type": "PLAN",
      "interval": "MONTH",
      "amount_minor": 4900,
      "currency": "USD",
      "credit_units": "10000"
    }
  ],
  "topups": [],
  "free_allowance_credits": "1000",
  "currency": "USD"
}
INTEGRATION DECISION
CALLER ACTION
Accept the returned representation or receipt, then compare the exact minor-unit price, currency, interval, granted credits, and active status before presenting a product choice.
RETRY SAFETY
Repeat only when the integration needs a fresher authoritative projection.
STATE RECONCILIATION
Use returned identifiers and versions as the comparison point for later reads. Refresh the billing account, subscription and entitlement versions, usage period, and invoice or provider reference before another billing-dependent action.
401The bearer credential is missing, expired, or invalid.Authentication required · JSON RESPONSE+
{
  "code": "invalid_credentials",
  "message": "The bearer credential is missing, expired, or invalid."
}
INTEGRATION DECISIONinvalid_credentials
CALLER ACTION
Discard the rejected credential, complete the documented authentication or reassertion flow, and rebuild any request signature with fresh timestamps and nonces.
RETRY SAFETY
Retry only with a newly valid credential and fresh replay-protection values. Do not replay an expired signature.
STATE RECONCILIATION
Authentication failed before an authoritative read was returned for workspace billing account, subscription, entitlement, invoice summary, and usage projections.
ESCALATE WHEN
Escalate when entitlement, subscription, invoice, usage, or provider evidence remains inconsistent after a fresh Core billing read.
403The credential lacks billing:read.Authority or policy denied · JSON RESPONSE+
{
  "code": "insufficient_scope",
  "message": "The credential lacks billing:read."
}
INTEGRATION DECISIONinsufficient_scope
CALLER ACTION
Verify the exact scope, tenant or workspace membership, owner boundary, step-up purpose, feature policy, and resource eligibility. Never broaden authority automatically.
RETRY SAFETY
Do not retry until the missing authority or policy condition has been deliberately resolved with least privilege.
STATE RECONCILIATION
Confirm the caller and resource resolve to the same authority boundary for workspace billing account, subscription, entitlement, invoice summary, and usage projections.
ESCALATE WHEN
Escalate when entitlement, subscription, invoice, usage, or provider evidence remains inconsistent after a fresh Core billing read.
503The authoritative Core billing projection is unavailable.Dependency unavailable or outcome uncertain · JSON RESPONSE+
{
  "code": "billing_unavailable",
  "message": "The authoritative Core billing projection is unavailable."
}
INTEGRATION DECISIONbilling_unavailable
CALLER ACTION
Treat the failure as transient and preserve the last known good representation without presenting it as fresh.
RETRY SAFETY
Retry with bounded exponential backoff and jitter; stop after the integration's failure budget is exhausted.
STATE RECONCILIATION
Refresh the billing account, subscription and entitlement versions, usage period, and invoice or provider reference before another billing-dependent action.
ESCALATE WHEN
Escalate when entitlement, subscription, invoice, usage, or provider evidence remains inconsistent after a fresh Core billing read.

OPERATIONAL NOTES

Security and lifecycle guarantees

  • Use this catalog to present available billing products before a future checkout ceremony. Catalog presence does not create a checkout, subscription, invoice, or settlement.
  • amount_minor is an integer in the smallest unit of the accompanying ISO 4217 currency; for example, 4900 USD means USD 49.00. credit_units and free_allowance_credits are decimal strings.
  • interval is null for non-recurring products. plans and topups are always arrays and are empty rather than null when a category has no products.
  • Processor price identifiers, private metadata, workspace identifiers, webhook configuration, and administrative controls are excluded. No query parameters or request body are accepted; responses are no-store.
DOCUMENTATION STATUS

This route is implemented in canonical gateway source and appears in the production OpenAPI snapshot observed 2026-09-11T06:35:11.572Z. Authentication, tenant, feature, venue, and market policy still apply.

Verify the exact production OpenAPI operation Return to the V2 directory