Deploy a prebuilt site

Changed on

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

Publishes a site you built yourself. Upload the build output as a .tar.gz archive, and it's live on the app's published URL by the time the request returns.

Archive the contents of the build folder rather than the folder itself, so that index.html sits at the root of the archive. The archive can be up to 50 MB, both as uploaded and once extracted, and can hold up to 1,000 files. Links, and files whose path is absolute or contains .. or :, are left out without an error.

The archive replaces the whole published site. It doesn't change the app's code, backend functions or entities. An app that isn't published yet, or that was unpublished, is published by this. Sending an archive identical to one the app already uploaded publishes the stored copy without uploading it again.

With a personal API key you need permission to publish apps in the app's workspace. A workspace API key with the apps:deploy scope doesn't need it.

This is limited to 5 requests per minute for each workspace's API keys, counted across all of the workspace's apps, so every personal and workspace API key in a workspace shares one allowance. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app, or a workspace API key with the apps:deploy scope. A read-only key is refused.</Note>

post/api/apps/{app_id}/deploy-dist

Request

  • Base URL
    https://app.base44.com
  • URL
    https://app.base44.com/api/apps/{app_id}/deploy-dist
  • Auth
    • HTTP bearer
    • or API key in header api_key
    • or HTTP bearer

Path parameters

app_idstring required

ID of the app to deploy.

Request body multipart/form-data

filestring binary required

The build output as a gzipped tar archive, with a file name ending in .tar.gz.

Response

The deploy is live.

deployed_atstring required

When the deploy was recorded, as a UTC timestamp in ISO 8601 format with no offset.

app_urlstring required

The app's published URL on its Base44 domain. A custom domain isn't returned here.

Example response

{
  "deployed_at": "2026-09-30T12:34:56.789000",
  "app_url": "https://task-tracker.base44.app"
}

Changes

    • info

      the endpoint scheme security WorkspaceApiKeyBearerAuth was added to the API

    • info

      the endpoint scheme security PersonalAccessTokenAuth was added to the API

    • info

      the endpoint scheme security WorkspaceApiKeyAuth was added to the API