---
title: "Upload an asset (base64)"
method: POST
path: "/v1/assets/upload/base64"
tags: ["App"]
---

# Upload an asset (base64)

`POST /v1/assets/upload/base64`

Upload a file using a JSON body with base64-encoded content. Returns an uploadID that can be referenced when sending messages with attachments. Alternative to the multipart upload endpoint.

## Request body

- UploadAssetInput
  - `content` string, required — Base64-encoded file content (max ~500MB decoded)
  - `fileName` string — Original filename. Generated if omitted
  - `mimeType` string — MIME type. Auto-detected from magic bytes if omitted

## Response `200`

Request executed successfully

- UploadAssetOutput
  - `uploadID` string — Unique upload ID for this asset
  - `srcURL` string — Local file URL (file://) for the uploaded asset
  - `fileName` string — Resolved filename
  - `mimeType` string — Detected or provided MIME type
  - `fileSize` number — File size in bytes
  - `width` number — Width in pixels (images/videos)
  - `height` number — Height in pixels (images/videos)
  - `duration` number — Duration in seconds (audio/videos)
  - `error` string — Error message if upload failed

## Other responses

- `400` — Invalid request parameters
- `401` — Access token is missing or invalid
- `403` — Access token does not have the required scope
- `404` — Resource not found
- `422` — Unprocessable entity - validation error
- `429` — Too many requests - rate limit exceeded
- `500` — Internal server error

---

[API](https://skmtc.net/beeper/apis/beeper-desktop-api.md) · [All operations](https://skmtc.net/beeper/apis/beeper-desktop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/beeper/beeper-desktop-api/revisions/5a8ac7b545c4/schema)
