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

Uploads a file to the app's media library. Send it as multipart/form-data in a field named file.

The file name decides what's accepted. It must end in one of these extensions: 3g2, 3gp, avi, csv, docx, fbx, gif, glb, gltf, ico, jpeg, jpg, json, m4v, md, mkv, mov, mp3, mp4, mtl, obj, ogv, pdf, png, svg, txt, wav, webm, webp, wmv, xlsx, zip. HTML files aren't accepted. The size limit depends on the type, from 1 MB for ico to 100 MB for audio and video. Most images can be up to 40 MB. The asset's file_name is the uploaded file's name with the same character rules as Create asset, and its file_type is the extension, in lowercase.

The file is stored at a public URL, returned in file_url, so anyone with the URL can open it.

In this response, created_date and updated_date include a +00:00 offset. List assets returns them without one.

This endpoint is limited to 60 requests per minute. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app. A read-only key is refused, and workspace API keys are not accepted.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

post/api/apps/{app_id}/assets/upload

Request

  • Base URL: https://app.base44.com
  • URL: https://app.base44.com/api/apps/{app_id}/assets/upload
  • Auth: HTTP bearer

Path parameters

app_idstring required

ID of the app whose media library to change.

Response

The new asset.

idstring required

ID of the asset.

app_idstring required

ID of the app the asset belongs to.

file_namestring required

Name of the file.

file_urlstring required

URL of the file.

source_type'upload' | 'generated' required

How the file got into the library. upload for a file someone uploaded, and generated for most files Base44 created for the app, such as AI-generated images and videos or a Figma import.

file_typestring nullable required

File extension without the dot, usually lowercase, such as png or mp4. The value is null when the file was added without one.

created_datestring required

When the asset was added to the library, as a UTC timestamp in ISO 8601 format.

updated_datestring required

When the asset was last changed, such as renamed, as a UTC timestamp in ISO 8601 format.

Example response

{
  "id": "68b0e1f2a3c4d5e6f7a8b9c0",
  "app_id": "6820f3a4e7b91d003c45a1f2",
  "file_name": "Logo-dark.png",
  "file_url": "https://media.base44.com/files/public/6820f3a4e7b91d003c45a1f2/Logo-dark.png",
  "source_type": "upload",
  "file_type": "png",
  "created_date": "2026-01-15T09:23:41",
  "updated_date": "2026-01-15T09:31:07"
}

Changes