to navigate · to open See all results
GET /api/v1/billing

Read plan and usage

Read the token organization's AssetCenter plan, subscription status, usage, and limits.

Last updated

Request

GET /api/v1/billing

Requires billing:read. Send Authorization: Bearer YOUR_API_TOKEN and Accept: application/json. No request body is supported.

Billing access is available through Custom permissions and new Full Access tokens. The Read Only preset does not include billing. Existing tokens keep their current permissions; issue a replacement token to grant billing access. Authentication and permissions.

Query parameters

This endpoint does not use query parameters.

Example

cURL / Bash
curl "https://my.assetcenter.app/api/v1/billing" \
  --header "Authorization: Bearer $ASSETCENTER_API_TOKEN" \
  --header "Accept: application/json"

Response

200 OK. Example for a free organization:

JSON
{
  "data": {
    "organization_id": 42,
    "organization_name": "Example Organization",
    "plan": {
      "key": "free",
      "name": "Free",
      "exempt": false,
      "status": null,
      "subscribed": false,
      "on_trial": false,
      "trial_ends_at": null,
      "on_grace_period": false,
      "ends_at": null
    },
    "usage": {
      "assets": {"used": 2, "limit": 25, "remaining": 23, "unit": "count"},
      "subscriptions": {"used": 0, "limit": null, "remaining": null, "unit": "count"},
      "people": {"used": 0, "limit": null, "remaining": null, "unit": "count"},
      "locations": {"used": 0, "limit": null, "remaining": null, "unit": "count"},
      "users": {"used": 1, "limit": 1, "remaining": 0, "unit": "count"},
      "storage": {"used": 0, "limit": 104857600, "remaining": 104857600, "unit": "bytes"}
    },
    "assistant": null
  }
}

plan.key identifies the effective AssetCenter plan. status is the locally stored Stripe subscription status, or null when there is no subscription. subscribed indicates whether the subscription currently grants access; on_grace_period indicates a scheduled cancellation with access remaining. exempt means the organization is exempt from subscription billing. on_trial includes a trial without a Stripe subscription.

trial_ends_at and ends_at use ISO 8601 timestamps with an explicit offset, or null. A historical subscription may retain its status and end date after plan access ends. Plan and subscription information comes from the app's stored state and webhook updates; this endpoint does not contact Stripe.

usage matches plan enforcement. Assets count available and deployed records; subscriptions exclude cancelled and retired records; people and locations count active records. Users include members and invitations that can still be accepted. Storage is measured in bytes. A null limit and remaining mean unlimited. Finite remaining allowances are floored at zero.

When Asset Assistant is available, assistant contains integer used, limit, and remaining, plus the ISO 8601 timestamp resets_at. Otherwise it is null.

Organization scope

The organization comes from the token, regardless of which organization its creator has selected in the app. Unsupported inputs such as tenant_id or organization_id return 422.

These endpoints read the organization's AssetCenter plan and invoices. The inventory subscriptions API manages tracked licenses and services separately. Billing portal sessions, checkout, payment methods, and subscription changes are unavailable through this public API.

Errors

401 means the token is missing, invalid, expired, revoked, or the wrong type. 403 means billing:read or the creator's active administrator access is missing. Unsupported inputs or a request body return 422. Standard token and organization limits return 429. Errors and rate limits.