> ## 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 business email status

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

Lists the business email on your workspace, one entry per domain, and tells you whether you can buy more. Business email is a Google Workspace subscription on one of your workspace's custom domains, billed to the workspace.

Each entry's `status` tells you what to do next:
- `PENDING_SETUP`: finish setting it up with [Get business email setup link](/api-reference/get-business-email-setup-link).
- `TOS_SUSPENDED`: the domain's Google admin has to accept Google's terms of service. Get them a sign-in link with [Get business email admin console link](/api-reference/get-business-email-admin-console-link).
- `EXPIRED`: the subscription has ended. Renew it from [Get business email management link](/api-reference/get-business-email-management-link).

Only the workspace owner can call this endpoint. A workspace with no billing account for business email gets an empty `items` list and `can_purchase: false`, whoever calls. A read-only token is refused, and workspace API keys aren't accepted. Limited to 30 requests a minute per caller. Some workspaces have a different limit.

Entries come in the order the billing provider lists them, and the default `limit` of 500 returns every one on one page. To page through them, pass a smaller `limit` and send each `next_cursor` back as `cursor`. A cursor carries the rest of the query, so send it alone.



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/billing/business-email/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/business-email/status:
    get:
      summary: Get business email status
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Lists the business email on your workspace, one entry per domain, and
        tells you whether you can buy more. Business email is a Google Workspace
        subscription on one of your workspace's custom domains, billed to the
        workspace.


        Each entry's `status` tells you what to do next:

        - `PENDING_SETUP`: finish setting it up with [Get business email setup
        link](/api-reference/get-business-email-setup-link).

        - `TOS_SUSPENDED`: the domain's Google admin has to accept Google's
        terms of service. Get them a sign-in link with [Get business email admin
        console link](/api-reference/get-business-email-admin-console-link).

        - `EXPIRED`: the subscription has ended. Renew it from [Get business
        email management
        link](/api-reference/get-business-email-management-link).


        Only the workspace owner can call this endpoint. A workspace with no
        billing account for business email gets an empty `items` list and
        `can_purchase: false`, whoever calls. A read-only token is refused, and
        workspace API keys aren't accepted. Limited to 30 requests a minute per
        caller. Some workspaces have a different limit.


        Entries come in the order the billing provider lists them, and the
        default `limit` of 500 returns every one on one page. To page through
        them, pass a smaller `limit` and send each `next_cursor` back as
        `cursor`. A cursor carries the rest of the query, so send it alone.
      operationId: get_status_api_billing_business_email_status_get
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 500
            minimum: 1
            description: >-
              Entries per page, 1 to 500. Defaults to 500, which fits every
              entry.
            default: 500
            title: Limit
          description: Entries per page, 1 to 500. Defaults to 500, which fits every entry.
          example: 10
        - name: cursor
          in: query
          required: false
          schema:
            type: string
            description: '`next_cursor` from the previous page. Send it alone.'
            title: Cursor
          description: '`next_cursor` from the previous page. Send it alone.'
          example: gAAAAABn7vJ0q2kX
      responses:
        '200':
          description: The workspace's business email.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessEmailStatus'
              example:
                items:
                  - domain: acme.com
                    status: ACTIVE
                    end_of_period_date: '2027-03-14T00:00:00Z'
                    auto_renew_off: false
                    created_date: '2026-03-14T09:21:07Z'
                can_purchase: true
        '400':
          description: >-
            The workspace's billing account couldn't be reached, so retry later.
            Also returned when `cursor` is invalid or expired, or was sent with
            `limit`.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: You aren't the workspace owner, or your token is read-only.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
              example:
                detail:
                  - type: less_than_equal
                    loc:
                      - query
                      - limit
                    msg: Input should be less than or equal to 500
                    input: '501'
                    ctx:
                      le: 500
        '429':
          description: Rate limit reached. Retry later.
      security:
        - PersonalAccessTokenAuth:
            - full_access
components:
  schemas:
    BusinessEmailStatus:
      properties:
        items:
          items:
            $ref: '#/components/schemas/BusinessEmailMailbox'
          type: array
          title: Items
          description: >-
            One entry per domain with business email on this page. With the
            default `limit`, every one. Empty when the workspace has none.
          example:
            - auto_renew_off: false
              created_date: '2026-03-14T09:21:07Z'
              domain: acme.com
              end_of_period_date: '2027-03-14T00:00:00Z'
              status: ACTIVE
        can_purchase:
          type: boolean
          title: Can Purchase
          description: >-
            `true` when the workspace can buy business email. `false` when it
            has no billing account for business email, or its plan is paid
            through the App Store.
          example: true
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Send as `cursor` to get the next page. `null` on the last page.
          example: gAAAAABn7vJ0q2kX
      type: object
      required:
        - items
        - can_purchase
        - next_cursor
      title: BusinessEmailStatus
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    BusinessEmailMailbox:
      properties:
        domain:
          type: string
          title: Domain
          description: Domain the business email is on.
          example: acme.com
        status:
          type: string
          enum:
            - ACTIVE
            - PENDING_SETUP
            - TOS_SUSPENDED
            - EXPIRED
          title: Status
          description: >-
            `ACTIVE` when it's working. `PENDING_SETUP` when it's bought but not
            set up yet. `TOS_SUSPENDED` when the domain's Google admin hasn't
            accepted Google's terms of service. `EXPIRED` when the subscription
            is no longer valid.
          example: ACTIVE
        end_of_period_date:
          anyOf:
            - type: string
            - type: 'null'
          title: End Of Period Date
          description: >-
            When the current billing period ends, as a date-time string, or
            `null` when the billing provider doesn't report it.
          example: '2027-03-14T00:00:00Z'
        auto_renew_off:
          type: boolean
          title: Auto Renew Off
          description: >-
            `true` when automatic renewal is off, so the subscription ends at
            `end_of_period_date`. `false` when it renews, or when its renewal
            setting can't be read.
          example: false
        created_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Created Date
          description: >-
            When the business email was bought, as a date-time string, or `null`
            when that can't be read.
          example: '2026-03-14T09:21:07Z'
      type: object
      required:
        - domain
        - status
        - end_of_period_date
        - auto_renew_off
        - created_date
      title: BusinessEmailMailbox
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  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.