> ## 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.

# Check app delete impact

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

Shows what deleting the app affects, so you can check before you call [Delete app](/api-reference/delete-app).

The response lists the template listings made from the app, the custom domains connected to it, how many users it has, and any Google Ads campaigns that are still serving. Delete app refuses while a campaign is serving, so pause those first. It works for an app that's already in the trash too.

You need editor access to the app. Passing this check doesn't mean you can delete the app: only its owner or a workspace admin can.

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app. A read-only key is refused, and workspace API keys are not accepted.</Note>

<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/apps/{app_id}/delete-check
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/delete-check:
    get:
      summary: Check app delete impact
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Shows what deleting the app affects, so you can check before you call
        [Delete app](/api-reference/delete-app).


        The response lists the template listings made from the app, the custom
        domains connected to it, how many users it has, and any Google Ads
        campaigns that are still serving. Delete app refuses while a campaign is
        serving, so pause those first. It works for an app that's already in the
        trash too.


        You need editor access to the app. Passing this check doesn't mean you
        can delete the app: only its owner or a workspace admin can.


        <Note>This endpoint accepts a personal API key belonging to a user with
        editor access to the app. A read-only key is refused, and workspace API
        keys are not accepted.</Note>


        <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: check_app_delete_dependencies_api_apps__app_id__delete_check_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app to check.
            title: App Id
          description: ID of the app to check.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: What deleting the app affects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppDeleteImpact'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have editor access to this app, or your API key is
            read-only.
        '404':
          description: App not found.
components:
  schemas:
    AppDeleteImpact:
      properties:
        has_dependent_templates:
          type: boolean
          title: Has Dependent Templates
          description: Whether any template listings were made from the app.
          example: true
        catalog_items:
          items:
            $ref: '#/components/schemas/DependentTemplate'
          type: array
          title: Catalog Items
          description: Template listings made from the app that aren't archived.
          example:
            - id: 68b2f0c1a4d9e7001c3b5a22
              name: CRM starter
              status: approved
              type: workspace
        has_connected_domains:
          type: boolean
          title: Has Connected Domains
          description: Whether any custom domains are connected to the app.
          example: true
        connected_domains:
          items:
            $ref: '#/components/schemas/ConnectedDomain'
          type: array
          title: Connected Domains
          description: >-
            Custom domains connected to the app, including ones that are turned
            off. Deleting the app releases them.
          example:
            - disabled: false
              domain: crm.acme.com
              id: 68c0d7e2b5a1f4001d2e9b37
        app_users_count:
          type: integer
          title: App Users Count
          description: Number of users of the app.
          example: 42
        active_google_ads_campaigns:
          items:
            type: string
          type: array
          title: Active Google Ads Campaigns
          description: >-
            Names of the app's Google Ads campaigns that are still serving.
            [Delete app](/api-reference/delete-app) refuses while this isn't
            empty.
          example: []
      type: object
      required:
        - has_dependent_templates
        - catalog_items
        - has_connected_domains
        - connected_domains
        - app_users_count
        - active_google_ads_campaigns
      title: AppDeleteImpact
      description: |-
        Doc-only: the handler returns a plain dict. ``google_ads_url`` stays
        unpublished: it's a builder page path, not an API link.
    DependentTemplate:
      properties:
        id:
          type: string
          title: Id
          description: ID of the template listing.
          example: 68b2f0c1a4d9e7001c3b5a22
        name:
          type: string
          title: Name
          description: Name of the template listing.
          example: CRM starter
        status:
          type: string
          title: Status
          description: 'Review status of the listing: `pending`, `approved`, or `rejected`.'
          example: approved
        type:
          type: string
          title: Type
          description: >-
            Who can see the listing: `public` for every Base44 user, or
            `workspace` for the app's workspace.
          example: workspace
      type: object
      required:
        - id
        - name
        - status
        - type
      title: DependentTemplate
    ConnectedDomain:
      properties:
        id:
          type: string
          title: Id
          description: ID of the custom domain.
          example: 68c0d7e2b5a1f4001d2e9b37
        domain:
          type: string
          title: Domain
          description: The domain name.
          example: crm.acme.com
        disabled:
          type: boolean
          title: Disabled
          description: Whether the domain is connected but turned off.
          example: false
      type: object
      required:
        - id
        - domain
        - disabled
      title: ConnectedDomain
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````