> ## Documentation Index
> Fetch the complete documentation index at: https://developers.reintersect.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload an app icon

> Upload the image file your app definition names as its icon, and get the asset id the manifest carries.

> Reintersect apps are in developer preview. Names and limits can still change before general
> release.

Stores an app icon and returns its asset id. `reintersect deploy` calls this when the app definition
sets `icon`, then deploys the version with that id as the manifest's `icon`. Uploading doesn't change
the app: the icon belongs to the version, and installs see it once a version that carries it is
published to production. See [App icon](/concepts/composition#app-icon).

Icons are stored by content, so uploading the same bytes again returns the same asset id.

Authenticate with a member API key of the app's owner or of a workspace owner or admin, a deploy
token for this app, or an agent builder token for an app the member owns. Any other caller gets
`ReintersectAppNotFoundError`.

## Body

`multipart/form-data` with:

| Part | Description |
| - | - |
| `icon` | A PNG, JPEG, GIF, WebP or AVIF image, at most 1 MB. Reintersect reads the format from the file's bytes. |

## Response

| Field | Description |
| - | - |
| `assetId` | The icon's asset id. Put it in the manifest's `icon` when you sync or upload a version of this app. |

## Errors

| `_tag` | Status | Cause |
| - | - | - |
| `ReintersectAppNotFoundError` | 404 | No such app, or you may not deploy it. |
| `ReintersectAppIconInvalidError` | 422 | The file is empty (`empty`), larger than 1 MB (`too-large`) or not a supported image (`unsupported-type`). |
| `ReintersectApiServiceUnavailableError` | 503 | Icon storage is unavailable. Upload again. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.