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

# Get mobile subscription status

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns your workspace's plan and whether its subscription is active, wherever it's billed: on the web, through the App Store, or through Google Play. For invoices, payment methods, and the full subscription, use [Get billing info](/api-reference/get-billing-info).

`is_active` follows the subscription's status, not just the plan. A web subscription that's in a trial or past due reports `is_active: false` while `tier` still shows its paid plan. Change the plan with [Change plan](/api-reference/change-plan).

Any member of the workspace can call this endpoint. A read-only token is refused, and workspace API keys aren't accepted.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/billing/mobile/subscription-status
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/billing/mobile/subscription-status:
    get:
      summary: Get mobile subscription status
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns your workspace's plan and whether its subscription is active,
        wherever it's billed: on the web, through the App Store, or through
        Google Play. For invoices, payment methods, and the full subscription,
        use [Get billing info](/api-reference/get-billing-info).


        `is_active` follows the subscription's status, not just the plan. A web
        subscription that's in a trial or past due reports `is_active: false`
        while `tier` still shows its paid plan. Change the plan with [Change
        plan](/api-reference/change-plan).


        Any member of the workspace can call this endpoint. A read-only token is
        refused, and workspace API keys aren't accepted.


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>
      operationId: get_subscription_status_api_billing_mobile_subscription_status_get
      responses:
        '200':
          description: The workspace's plan and subscription state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionStatusResponse'
              example:
                tier: builder
                source: stripe
                is_active: true
                expires_at: '2026-11-25T08:00:00+00:00'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: Your token is read-only.
        '429':
          description: Rate limit exceeded (60 requests a minute).
      security:
        - PersonalAccessTokenAuth:
            - full_access
components:
  schemas:
    SubscriptionStatusResponse:
      properties:
        tier:
          type: string
          title: Tier
          description: >-
            ID of the plan the workspace is on, such as `builder` or
            `builder_yearly`. `free` when it has no paid plan. See [List
            plans](/api-reference/list-plans).
          example: builder
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
          description: >-
            Where the subscription is billed: `stripe` or `wix` for the web,
            `apple` for the App Store, or `google_play` for Google Play. An App
            Store subscription keeps `apple` after it ends, so check
            `is_active`. `null` when the workspace has no subscription.
          example: stripe
        is_active:
          type: boolean
          title: Is Active
          description: >-
            `true` while a web subscription is active, or while an App Store or
            Google Play subscription is within its paid period. `false` for a
            web subscription that's in a trial or past due.
          example: true
        expires_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Expires At
          description: >-
            When the current paid period ends, as an ISO 8601 date-time. For an
            App Store or Google Play subscription it's `null` once that period
            has ended. `null` when there's no subscription.
          example: '2026-11-25T08:00:00+00:00'
      type: object
      required:
        - tier
        - source
        - is_active
        - expires_at
      title: SubscriptionStatusResponse
      description: Response for subscription status check.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: >-
        Personal access token, sent as `Authorization: Bearer <token>`. Each
        operation lists the permission it needs: `read_only` or `full_access`. A
        full-access token can call every operation. A read-only token can call
        only the operations that list `read_only`; anything else returns 403
        `read_only_credential_route_not_allowed`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.