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

# Update app

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

Changes the app's name, its description, or both.

Send only the fields you want to change. A field you leave out keeps its value.

Renaming doesn't change the app's address. Change that with [Change app slug](/api-reference/change-app-slug).

<Warning>This endpoint also accepts other app fields, but only `name` and `user_description` are part of this API. Don't send anything else. Other fields aren't covered by the contract and can change or be rejected without notice.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json put /api/apps/{app_id}
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}:
    put:
      summary: Update app
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Changes the app's name, its description, or both.


        Send only the fields you want to change. A field you leave out keeps its
        value.


        Renaming doesn't change the app's address. Change that with [Change app
        slug](/api-reference/change-app-slug).


        <Warning>This endpoint also accepts other app fields, but only `name`
        and `user_description` are part of this API. Don't send anything else.
        Other fields aren't covered by the contract and can change or be
        rejected without notice.</Warning>
      operationId: api_put_api_apps__item_id__put
      parameters:
        - description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
          in: path
          name: app_id
          required: true
          schema:
            title: App Id
      requestBody:
        content:
          application/json:
            example:
              name: Nordwind Furniture
            schema:
              properties:
                name:
                  description: New name for the app.
                  example: Nordwind Furniture
                  type: string
                user_description:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: New description for the app, or `null` to remove it.
                  example: >-
                    An online catalog and order tracker for a furniture
                    workshop.
              title: UpdateApp
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppSummary'
          description: The app, with its new details.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: You don't have access to this app, or it doesn't exist.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
components:
  schemas:
    AppSummary:
      description: An app in a workspace, limited to the properties the caller requested.
      properties:
        created_by:
          anyOf:
            - type: string
            - type: 'null'
          description: Email of the user who created the app.
          example: developer@example.com
          title: Created By
        created_date:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: Time the app was created, as a UTC timestamp in ISO 8601 format.
          example: '2026-08-01T09:15:00'
          title: Created Date
        first_prompt_model_comparison:
          anyOf:
            - $ref: '#/components/schemas/FirstPromptModelComparisonPublicState'
            - type: 'null'
          description: >-
            Accepted first-prompt model comparison, including its durable
            comparison ID.
        id:
          anyOf:
            - type: string
            - type: 'null'
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
          title: Id
        last_deployed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: >-
            Time the app was last published, as a UTC timestamp in ISO 8601
            format, or `null` if it has never been published.
          example: '2026-08-02T14:30:00'
          title: Last Deployed At
        name:
          anyOf:
            - type: string
            - type: 'null'
          description: Display name of the app.
          example: My CRM
          title: Name
        preview_screenshot_url:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            URL of a preview screenshot taken before publishing, distinct from
            `screenshot_url`, or `null` if none has been captured.
          example: https://storage.base44.com/previews/6820f3a4e7b91d003c45a1f2.png
          title: Preview Screenshot Url
        screenshot_url:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            URL of a screenshot of the published app. Captured shortly after
            each publish, so it can briefly lag or be `null` right after
            publishing.
          example: https://storage.base44.com/screenshots/6820f3a4e7b91d003c45a1f2.png
          title: Screenshot Url
        slug:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            URL slug for the app, auto generated from the name and app ID or set
            to a custom value, or `null` if the app has no slug yet. The
            published URL is built from it.
          example: my-crm-3c45a1f2
          title: Slug
        status:
          anyOf:
            - $ref: '#/components/schemas/AppStatusResponse'
            - type: 'null'
          description: >-
            The app's current build status. Poll while a build is in progress to
            watch it finish. This tracks building, not publishing.
        updated_date:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: >-
            Time the app document was last written, as a UTC timestamp in ISO
            8601 format.
          example: '2026-08-02T14:30:00'
          title: Updated Date
        user_description:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Description of the app, or `null` if none was set. On a newly
            created app this holds the original prompt text.
          example: A CRM to track leads and deals
          title: User Description
      title: AppSummary
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    FirstPromptModelComparisonPublicState:
      properties:
        client_creation_id:
          title: Client Creation Id
          type: string
        id:
          title: Id
          type: string
        models:
          items:
            type: string
          title: Models
          type: array
        status:
          enum:
            - preparing
            - running
            - failed
            - selected
            - cancelled
          title: Status
          type: string
      required:
        - id
        - client_creation_id
        - models
        - status
      title: FirstPromptModelComparisonPublicState
      type: object
    AppStatusResponse:
      description: The app's current build status.
      properties:
        details:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Human readable note about the current state, such as what is being
            processed or why it failed, or `null` when there is nothing to
            report.
          example: Publishing app
          title: Details
        error_source:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Where the failure originated when `state` is `error`, or `null`
            otherwise. A value of `paywall` means the work was blocked because
            the app's workspace has no credits left.
          example: build
          title: Error Source
        last_updated_date:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: >-
            Time the status was last updated, as a UTC timestamp in ISO 8601
            format.
          example: '2026-08-02T14:30:00Z'
          title: Last Updated Date
        paywall_context:
          anyOf:
            - $ref: '#/components/schemas/PaywallStatusContextResponse'
            - type: 'null'
          description: >-
            Present when the operation was blocked by a plan limit, describing
            what was evaluated, or `null` otherwise.
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            ID of the request that last changed the status, or `null` if the
            status has never changed. Useful when reporting an issue.
          example: a1b2c3d4e5f67890abcdef12
          title: Request Id
        state:
          description: >-
            Where the app is in its build lifecycle. Ready means idle with no
            build in progress, processing means the app is being generated or
            modified, and error means the last build failed. This tracks
            building, not publishing.
          enum:
            - ready
            - processing
            - error
          example: ready
          title: State
          type: string
      required:
        - state
      title: AppStatusResponse
      type: object
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    PaywallStatusContextResponse:
      properties:
        billing_organization_id:
          description: ID of the billing organization the paywall was evaluated against.
          example: 67e0b12c4d8a3f005b21c9e4
          title: Billing Organization Id
          type: string
        evaluated_at:
          description: >-
            Time the paywall condition was evaluated, as a UTC timestamp in ISO
            8601 format.
          example: '2026-08-02T14:30:00Z'
          format: date-time
          title: Evaluated At
          type: string
        user_id:
          description: ID of the user the paywall was evaluated for.
          example: 6706af53b9c1e2004a37d85f
          title: User Id
          type: string
      required:
        - billing_organization_id
        - user_id
        - evaluated_at
      title: PaywallStatusContextResponse
      type: object
  securitySchemes:
    PersonalAccessTokenAuth:
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'
      scheme: bearer
      type: http

````