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

# Unpublish app

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

Takes a published app offline.

Visitors get an offline notice instead of the app. You can keep working on it in the editor, and its data, settings, and custom domains stay as they are. To put it back online, publish it again with [Deploy an app](/api-reference/deploy-an-app).

<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 post /api/apps/{app_id}/undeploy
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}/undeploy:
    post:
      summary: Unpublish app
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Takes a published app offline.


        Visitors get an offline notice instead of the app. You can keep working
        on it in the editor, and its data, settings, and custom domains stay as
        they are. To put it back online, publish it again with [Deploy an
        app](/api-reference/deploy-an-app).


        <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: undeploy_api_apps__app_id__undeploy_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app to unpublish.
            title: App Id
          description: ID of the app to unpublish.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: The app, now offline.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnpublishedApp'
        '400':
          description: >-
            The app has never been published, it's already offline, or your
            workspace's publishing policy doesn't let you publish it.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have editor access to this app, the app is blocked, or
            your API key is read-only.
        '404':
          description: App not found.
components:
  schemas:
    UnpublishedApp:
      properties:
        id:
          type: string
          title: Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
        name:
          type: string
          title: Name
          description: Display name of the app.
          example: My CRM
        is_unpublished:
          type: boolean
          title: Is Unpublished
          description: >-
            Whether the app is offline. Always `true` here, because the
            unpublish succeeded.
          example: true
        last_deployed_at:
          type: string
          format: date-time
          title: Last Deployed At
          description: >-
            Time the app was last published, as a UTC timestamp in ISO 8601
            format. Unpublishing doesn't change it.
          example: '2026-08-02T14:30:00'
      type: object
      required:
        - id
        - name
        - is_unpublished
        - last_deployed_at
      title: UnpublishedApp
      description: The app, now offline.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````