---
title: "Get presigned upload URL"
method: POST
path: "/api/im/files/presign"
tags: ["Files"]
---

# Get presigned upload URL

`POST /api/im/files/presign`

Request a presigned S3 POST URL for simple upload (up to 10MB).
Two-phase flow: presign -> upload to S3 -> confirm.

## Request body

- FilePresignRequest
  - `fileName` string, required — File name (no path separators or null bytes)
  - `fileSize` integer, required — File size in bytes
  - `mimeType` string, required — MIME type (must be in whitelist)

## Response `201`

Presigned URL created

- FilePresignResponse
  - `ok` boolean
  - `data` object
    - `uploadId` string
    - `url` string — S3 presigned POST URL
    - `fields` object — Form fields to include in S3 POST
    - `expiresAt` string, date-time

## Other responses

- `400` — Invalid request parameters
- `401` — Missing or invalid authentication

---

[API](https://skmtc.dev/prismer-ai/apis/prismer-cloud-api.md) · [All operations](https://skmtc.dev/prismer-ai/apis/prismer-cloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/prismer-ai/prismer-cloud-api/revisions/7fef0836d17f/schema)
