Create app

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

Creates a new app. Pass initial_message.content to build it from a prompt, or send an empty body ({}) to create an empty app.

Building from a prompt runs in the background and consumes credits. Poll Get app and watch its status to see when the build finishes. By default the app is created in your default workspace. Set organization_id to create it in another workspace you belong to. This endpoint is limited to 5 requests per minute.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time. Send only the fields documented here. Other request fields are not supported and their behavior can change.</Warning>

post/api/apps

Request body

organization_idstring

ID of the workspace to create the app in. Omit to use your default workspace. You must have an editor-capable role (Editor or above) in the workspace. Viewers and guests cannot create apps. This is the same workspace ID that List apps accepts as workspace_id.

Example request

{
  "initial_message": {
    "content": "A CRM to track leads and deals"
  },
  "organization_id": "6820f3a4e7b91d003c45a1f2"
}

Response

The created app.

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. On a newly created app this holds the original prompt text.

created_bystring nullable

Email of the user who created the app.

created_datestring date-time nullable

Time the app was created.

updated_datestring date-time nullable

Time the app document was last written.

last_deployed_atstring date-time nullable

Time the app was last published, 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, and null if none has been captured.

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:00",
    "error_source": "build",
    "paywall_context": {
      "billing_organization_id": "6820f3a4e7b91d003c45a1f2",
      "user_id": "6820f3a4e7b91d003c45a1f3",
      "evaluated_at": "2026-08-02T14:30:00"
    }
  },
  "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"
}

Changes