---
title: "Upload asset"
method: POST
path: "/api/apps/{app_id}/assets/upload"
---

# Upload asset

`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

<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`, `pptx`, `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](/api-reference/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](/api-reference/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>

## Path parameters

- `app_id` string, required: ID of the app whose media library to change.

## Request body `multipart/form-data`

- UploadAsset
  - `file` string, binary, required: The file to upload. Its name must end in one of the supported extensions.

## Response `200`

The new asset.

- AssetSummary: A file in the app's media library.
  - `id` string, required: ID of the asset.
  - `app_id` string, required: ID of the app the asset belongs to.
  - `file_name` string, required: Name of the file.
  - `file_url` string, 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_type` string, 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_date` string, required: When the asset was added to the library, as a UTC timestamp in ISO 8601 format.
  - `updated_date` string, required: When the asset was last changed, such as renamed, as a UTC timestamp in ISO 8601 format.

## Other responses

- `400`: The file name has no supported extension, or the file is over the size limit for its type.
- `401`: Missing or invalid credentials.
- `403`: You don't have editor access to this app, the app is blocked, your API key is read-only, or you used a workspace API key.
- `404`: App not found.
- `422`: `file` is missing.
- `429`: Rate limit exceeded. The base limit is 60 requests per minute. See [Rate limits](/developers/references/apps-api/get-started/rate-limits) for the multiplier your plan gets.

## Changes

- **2026-10-11** `80287813ab84`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-10** `fc604cdcc3a2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/apps/:app_id/assets/upload/post.md)

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) - [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/idealspot/apis/base44-app-management-api/revisions/b5b4ebd82a1e?raw)
