Get preview URL

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

Returns a URL that serves the app as it currently stands in the app editor, including changes that haven't been published yet. Use it to look at your work in progress. Use Deploy an app to put it in front of your users.

The preview is served by a sandbox that shuts down when it goes unused. If none is running, this starts one, so the first call after a quiet period takes noticeably longer than later ones. The sandbox_info.cold_start field tells you which happened.

A 409 usually means the app's code doesn't currently build. The response body says what failed, so send that to the AI with Send chat message and ask for the preview again.

get/api/apps/{app_id}/sandbox/preview-url

Path parameters

app_idstring required

Response

Successful Response

preview_urlstring required

URL that serves the app as it currently stands in the app editor, including changes that haven't been published. Open it in a browser or an iframe.

preview_tokenstring nullable

Short-lived token the preview URL needs to authenticate against the preview proxy. Treat it as a credential and don't share it, because anyone holding it can load the app before it is published.

proxy_pooledboolean nullable

Telemetry only: the preview proxy's connection-pooling rollout arm this app is in, so client-side preview metrics can be split by arm. None when the preview does not go through the platform proxy at all (imported apps).

bridge_injectedboolean

Whether the preview host injects the builder bridge. False when the platform proxy is disabled and the preview falls back to the sandbox's own host, so the editor knows the bridge's mount/paint signals will never arrive and must not wait for them.

Example response

{
  "preview_url": "https://preview-6820f3a4e7b91d003c45a1f2.base44.app",
  "preview_token": "pv_8f2c1a9d4b7e",
  "sandbox_info": {
    "timeout_timestamp": "2026-08-02T15:30:00"
  }
}

Changes

Changed in 3 of the 11 revisions of this API.4

    • removed the non-success response with the status 422

      response-non-success-status-removed

    • added the optional property bridge_injected to the response with the 200 status

      response-optional-property-added

    • added the optional property proxy_pooled to the response with the 200 status

      response-optional-property-added

    • endpoint added

      endpoint-added