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 details and settings. That covers its name and description, who can open it, how people sign in, and a few display settings.

Send only the fields you want to change. A field you leave out keeps its value, and so does a login method you leave out of auth_config.

Renaming doesn't change the app's address. Change that with Change app slug.

A new public_settings value applies to the published app right away, and so does whether others can remix the app. Changes to auth_config, the Base44 badge, and hide_entity_created_by take effect on the published app once you deploy the app, or sooner if a public_settings change carries them along.

<Warning>This endpoint also accepts other app fields, but only the fields documented here 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>

put/api/apps/{app_id}

Path parameters

{"stackTrail":"paths:/api/apps/{app_id}:put:parameters:0:schema","oasType":"schema","type":"unknown","title":"App Id"}

ID of the app.

Request body

namestring

New name for the app.

user_descriptionstring nullable

New description for the app, or null to remove it.

public_settings'public_without_login' | 'public_with_login' | 'workspace_with_login' | 'private_with_login'

Who can open the published app. public_without_login lets anyone in, unless the workspace enforces SSO for apps, in which case visitors must log in. public_with_login lets anyone in who logs in, workspace_with_login admits only logged-in members of the workspace, and private_with_login admits only users who were granted access. Switching to workspace_with_login or private_with_login needs a paid plan, and a workspace policy can restrict which values you can choose. An agent app always stays private_with_login.

is_remixableboolean

true shows the Base44 badge on the published app and lets others remix it. The badge only shows while the app is public_with_login or public_without_login. false hides the badge and turns remixing off, which needs a paid plan on the app's workspace.

hide_entity_created_byboolean

true leaves the email of the user who created each record (created_by) out of the app's entity records, and false includes it. created_by_id is always included. Newer apps always leave the email out and ignore this field.

dev_environment_enabledboolean

true turns on test data. The app gets a test database next to its live one, so you can try changes in the preview without touching live data. Turning it on needs a Builder plan or higher on the app's workspace. false turns it off.

Example request

{
  "name": "Nordwind Furniture",
  "user_description": "An online catalog and order tracker for a furniture workshop.",
  "public_settings": "public_with_login",
  "auth_config": {
    "enable_username_password": true,
    "enable_google_login": false
  },
  "hide_entity_created_by": true,
  "dev_environment_enabled": true
}

Response

The app, with its new details.

idstring nullable

ID of the app.

namestring nullable

Display name of the app.

slugstring nullable

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.

user_descriptionstring nullable

Description of the app, or null if none was set. An app created without a name gets a generated description once a build turn changes it.

created_bystring nullable

Email of the user who created the app.

created_datestring date-time nullable

Time the app was created, as a UTC timestamp in ISO 8601 format.

updated_datestring date-time nullable

Time the app document was last written, as a UTC timestamp in ISO 8601 format.

last_deployed_atstring date-time nullable

Time the app was last published, as a UTC timestamp in ISO 8601 format, or null if it has never been published.

screenshot_urlstring nullable

URL of a screenshot of the published app. Captured shortly after each publish, so it can briefly lag or be null right after publishing.

preview_screenshot_urlstring nullable

URL of a preview screenshot taken before publishing, distinct from screenshot_url, or null if none has been captured.

main_branch_protectedboolean nullable

Whether the app's main branch is protected, so changes to main must go through a branch that's merged back. Change it with Set main branch protection.

organization_idstring nullable

ID of the workspace the app belongs to.

owner_idstring nullable

ID of the user who owns the app. It starts as the creator and changes when ownership is transferred.

app_typestring nullable

Kind of app, set when it's created. One of user_app (a web app), user_agent (an AI agent), mobile_app (a native mobile app), user_game (a game), slide (a presentation), or imported_app (an app imported from an existing code repository). List apps returns it as stored, so an older agent app can report agent instead of user_agent, and some older apps don't include it. Get app always returns one of the values above.

public_settings'public_without_login' | 'public_with_login' | 'workspace_with_login' | 'private_with_login' nullable

Who can open the published app. Each value is described under Update app, which also changes it.

is_remixableboolean nullable

Whether others can remix the app. While it's true, the published app also shows the Base44 badge if public_settings is public_with_login or public_without_login.

hide_entity_created_byboolean nullable

Whether the app's entity records leave out the email of the user who created each one (created_by). Newer apps always leave the email out, whatever this is set to.

dev_environment_enabledboolean nullable

Whether test data is on, which gives the app a test database next to its live one.

logo_urlstring nullable

URL of the app's logo, or null if it has none. Set it with Set app logo or Generate app logo.

social_image_urlstring nullable

URL of the image shown when the app is shared on social platforms, or null if none was set, in which case the logo is shown instead. Set it with Set social image.

is_unpublishedboolean nullable

Whether the app was taken offline with Unpublish app and hasn't been published again since. While it's true, the published URL is offline and last_deployed_at still shows the last publish.

Example response

{
  "id": "6820f3a4e7b91d003c45a1f2",
  "name": "My CRM",
  "slug": "my-crm-3c45a1f2",
  "user_description": "A CRM to track leads and deals",
  "created_by": "developer@example.com",
  "created_date": "2026-08-01T09:15:00",
  "updated_date": "2026-08-02T14:30:00",
  "status": {
    "state": "ready",
    "details": "Publishing app",
    "request_id": "a1b2c3d4e5f67890abcdef12",
    "last_updated_date": "2026-08-02T14:30:00Z",
    "error_source": "build",
    "paywall_context": {
      "billing_organization_id": "67e0b12c4d8a3f005b21c9e4",
      "user_id": "6706af53b9c1e2004a37d85f",
      "evaluated_at": "2026-08-02T14:30:00Z"
    }
  },
  "last_deployed_at": "2026-08-02T14:30:00",
  "screenshot_url": "https://storage.base44.com/screenshots/6820f3a4e7b91d003c45a1f2.png",
  "preview_screenshot_url": "https://storage.base44.com/previews/6820f3a4e7b91d003c45a1f2.png",
  "organization_id": "67e0b12c4d8a3f005b21c9e4",
  "owner_id": "6706af53b9c1e2004a37d85f",
  "app_type": "user_app",
  "public_settings": "public_with_login",
  "auth_config": {
    "enable_username_password": true,
    "enable_google_login": true
  },
  "hide_entity_created_by": true,
  "logo_url": "https://storage.base44.com/6820f3a4e7b91d003c45a1f2/3f2504e0_logo.png",
  "social_image_url": "https://storage.base44.com/6820f3a4e7b91d003c45a1f2/7c9e6679_social.png"
}

Changes

Changed in 4 of the 33 revisions of this API.1120

    • ●

      removed the optional property from the response with the status

      response-optional-property-removed

    This revision also has 3 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

  • 347e2afcf94a118See the full diff
    • ▲

      removed the media type application/json for the response with the status

      response-media-type-removed

    • ○

      added the new optional request property

      new-optional-request-property

    • ○

      added the new optional request property

      new-optional-request-property

    • ○

      added the new optional request property

      new-optional-request-property

    • ○

      added the new optional request property

      new-optional-request-property

    • ○

      added the new optional request property

      new-optional-request-property

    • ○

      added the non-success response with the status

      response-non-success-status-added

    • ○

      added the non-success response with the status

      response-non-success-status-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      endpoint added

      endpoint-added