> ## Documentation Index
> Fetch the complete documentation index at: https://cactal.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get billing state

> Returns the organization’s provider-neutral billing state: subscription status, plan-differentiated capability flags, the AI credit meter, the prepaid credit balance purchased through top-ups, credits granted by Cactal support with their remaining balance and expiry, and capacity for websites with custom domains. Requires the organization owner.



## OpenAPI

````yaml /api-reference/openapi.json get /billing/state
openapi: 3.1.0
info:
  title: Cactal API
  version: 1.0.0
  description: >-
    The Cactal public API. Create, edit, publish, and operate websites
    programmatically. Authenticate every request with an API key sent as
    `Authorization: Bearer <key>`.
servers:
  - url: https://api.cactal.ai/v1
security:
  - apiKey: []
tags:
  - name: Documentation
    description: >-
      Search and read the Cactal product documentation for concepts, guides,
      agent workflows, platform behavior, and API operations.
  - name: Feedback
    description: >-
      Submit free-form product feedback from users and agents to the Cactal
      feedback inbox.
  - name: Websites
    description: >-
      Create and manage websites — the top-level resource that owns source code,
      content, assets, domains, and analytics.
  - name: Website editors
    description: >-
      Grant, list, and revoke website-scoped editor access, and invite
      collaborators to a single website by email.
  - name: API keys
    description: >-
      Create, scope, rotate, and revoke the API keys that authenticate
      programmatic and agent access.
  - name: Source code
    description: >-
      Read and edit the framework source files of a website draft. Mutations
      require an edit lease.
  - name: Publishing
    description: Validate, build, publish, and roll back website versions.
  - name: CMS collections
    description: >-
      Define the content model: collections of structured content owned by a
      website.
  - name: CMS fields
    description: Manage the typed fields that make up a collection schema.
  - name: CMS items
    description: >-
      Create, query, publish, and organize the content entries inside a
      collection.
  - name: Domains
    description: >-
      Manage platform subdomains and custom domains, including DNS verification
      and the primary domain.
  - name: Assets
    description: Upload and manage website files and images served from the Cactal CDN.
  - name: Media generation
    description: >-
      Generate reference-guided website images that are stored as ordinary
      Cactal CDN assets.
  - name: Project Context
    description: >-
      Upload private durable reference material that the website agent can
      search, read, and inspect.
  - name: Analytics
    description: >-
      Read first-party traffic analytics for a website and export datasets as
      CSV.
  - name: Organizations
    description: Manage organizations, members, and organization-wide invitations.
  - name: Audit log
    description: >-
      Read the immutable record of actions performed in an organization by users
      and API keys.
  - name: Billing
    description: >-
      Read billing state and manage plans, site capacity, and prepaid usage
      balance. Every billing operation requires the organization owner role,
      which API keys cannot hold — today these operations are performed from the
      dashboard, return 403 for API-key callers, and are hidden from MCP tool
      lists.
paths:
  /billing/state:
    get:
      tags:
        - Billing
      summary: Get billing state
      description: >-
        Returns the organization’s provider-neutral billing state: subscription
        status, plan-differentiated capability flags, the AI credit meter, the
        prepaid credit balance purchased through top-ups, credits granted by
        Cactal support with their remaining balance and expiry, and capacity for
        websites with custom domains. Requires the organization owner.
      operationId: billing.state.get
      parameters:
        - name: organizationId
          in: query
          required: true
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Current billing state for the organization.
          content:
            application/json:
              schema:
                type: object
                properties:
                  organizationId:
                    type: string
                    description: Organization this billing state belongs to.
                  status:
                    type: string
                    enum:
                      - no_subscription
                      - active
                      - billing_grace
                    description: >-
                      Provider-neutral subscription status. `billing_grace`
                      means past due: existing websites keep serving, but paid
                      changes and metered consumption are blocked. The
                      auto-enabled free plan reports `no_subscription`.
                  complimentary:
                    type: boolean
                    description: >-
                      True when the organization has the manually assigned,
                      no-charge complimentary plan.
                  subscription:
                    description: >-
                      Current paid subscription metadata. Omitted on the free
                      plan or when the provider does not report one.
                    type: object
                    properties:
                      plan:
                        type: string
                        enum:
                          - pro
                          - enterprise
                        description: >-
                          Current plan. `enterprise` is a per-customer custom
                          plan managed by sales.
                      interval:
                        description: >-
                          Billing interval. Omitted for enterprise custom plans
                          when the provider does not report a public interval.
                        type: string
                        enum:
                          - monthly
                          - annual
                      aiCreditTier:
                        description: >-
                          Monthly AI credit allowance granted by the
                          subscription. Omitted when the provider does not
                          report it.
                        type: number
                      currentPeriodEnd:
                        description: >-
                          Current billing period end as Unix time in
                          milliseconds. Omitted when the provider does not
                          report it.
                        type: number
                      canceledAtPeriodEnd:
                        type: boolean
                        description: >-
                          True when cancellation is scheduled for the end of the
                          current billing period.
                    required:
                      - plan
                      - canceledAtPeriodEnd
                    additionalProperties: false
                  capabilities:
                    type: object
                    propertyNames:
                      type: string
                      enum:
                        - analytics_view
                    additionalProperties:
                      type: boolean
                    description: >-
                      Plan-differentiated product capabilities currently
                      available to the organization.
                  meters:
                    type: object
                    propertyNames:
                      type: string
                      enum:
                        - ai_credits
                    additionalProperties:
                      type: object
                      properties:
                        included:
                          type: number
                          description: Amount included with the current plan.
                        prepaid:
                          type: number
                          description: Amount purchased as prepaid balance.
                        used:
                          type: number
                          description: Amount consumed in the current period.
                        remainingIncluded:
                          type: number
                          description: Unused portion of the included amount.
                        remainingPrepaid:
                          type: number
                          description: Unused portion of the prepaid amount.
                        remaining:
                          type: number
                          description: >-
                            Total currently spendable amount after temporary
                            reservations.
                        settledRemaining:
                          type: number
                          description: >-
                            Total remaining amount after settled consumption,
                            excluding temporary reservations.
                        nextResetAt:
                          description: >-
                            Next balance reset as Unix time in milliseconds.
                            Omitted for balances that do not reset.
                          type: number
                        unlimited:
                          type: boolean
                          description: >-
                            True when the meter is not limited on the current
                            plan.
                      required:
                        - included
                        - prepaid
                        - used
                        - remainingIncluded
                        - remainingPrepaid
                        - remaining
                        - settledRemaining
                        - unlimited
                      additionalProperties: false
                      description: >-
                        Balance state for one usage meter, in the meter’s native
                        unit.
                    description: Customer-facing usage meters keyed by meter ID.
                  usageBalance:
                    description: >-
                      Prepaid credit balance purchased through top-ups. These
                      credits never expire and are consumed after the monthly
                      allowance. Omitted when the provider does not report it.
                    type: object
                    properties:
                      included:
                        type: number
                        description: Amount included with the current plan.
                      prepaid:
                        type: number
                        description: Amount purchased as prepaid balance.
                      used:
                        type: number
                        description: Amount consumed in the current period.
                      remainingIncluded:
                        type: number
                        description: Unused portion of the included amount.
                      remainingPrepaid:
                        type: number
                        description: Unused portion of the prepaid amount.
                      remaining:
                        type: number
                        description: >-
                          Total currently spendable amount after temporary
                          reservations.
                      settledRemaining:
                        type: number
                        description: >-
                          Total remaining amount after settled consumption,
                          excluding temporary reservations.
                      nextResetAt:
                        description: >-
                          Next balance reset as Unix time in milliseconds.
                          Omitted for balances that do not reset.
                        type: number
                      unlimited:
                        type: boolean
                        description: >-
                          True when the meter is not limited on the current
                          plan.
                    required:
                      - included
                      - prepaid
                      - used
                      - remainingIncluded
                      - remainingPrepaid
                      - remaining
                      - settledRemaining
                      - unlimited
                    additionalProperties: false
                  creditGrants:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Credit grant identifier.
                        credits:
                          type: number
                          description: Credits originally granted.
                        remaining:
                          type: number
                          description: Unspent credits on this grant.
                        expiresAt:
                          description: >-
                            Expiry as Unix time in milliseconds. Omitted when
                            the grant never expires.
                          type: number
                      required:
                        - id
                        - credits
                        - remaining
                      additionalProperties: false
                    description: >-
                      Credits granted to the organization by Cactal support.
                      Spent after the monthly allowance and before purchased
                      credits; grants with an expiry are spent soonest first.
                  billableSiteCapacity:
                    description: >-
                      Total capacity for websites with custom domains. Omitted
                      when the provider does not report it.
                    type: number
                  billableSiteCount:
                    description: Number of websites with at least one custom domain.
                    type: number
                required:
                  - organizationId
                  - status
                  - complimentary
                  - capabilities
                  - meters
                  - creditGrants
                additionalProperties: false
        '400':
          description: >-
            Validation failed. The response `message` names the first invalid
            field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '401':
          description: Missing, invalid, expired, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '403':
          description: The authenticated principal lacks the required capability.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '404':
          description: >-
            The resource does not exist or is outside the principal’s access
            scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '429':
          description: >-
            Rate limit exceeded. Retry after the number of seconds in the
            `Retry-After` header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
components:
  schemas:
    ServiceError:
      type: object
      required:
        - kind
        - message
      description: >-
        Canonical error body returned by every non-2xx response. Extra fields
        carry error-specific details.
      properties:
        kind:
          type: string
          enum:
            - validation
            - unauthorized
            - forbidden
            - not_found
            - conflict
            - rate_limited
            - internal
          description: Stable, machine-readable error category.
        message:
          type: string
          description: Human-readable explanation of the failure.
        suggestion:
          type: string
          description: >-
            What to do next when the failure has a known fix; may name the exact
            operation to call.
        validValues:
          type: array
          items:
            type: string
          description: The acceptable values for the failing field, when the set is closed.
      additionalProperties: true
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Cactal API key. Create one in the dashboard or via `POST /apiKeys`. The
        plaintext key is shown once at creation.

````