---
title: "POST /v1/files/upload-url"
method: POST
path: "/v1/files/upload-url"
tags: ["Files"]
---

# POST /v1/files/upload-url

`POST /v1/files/upload-url`

## Request

- Base URL: `https://api.virtuall.pro`
- URL: `https://api.virtuall.pro/v1/files/upload-url`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

## Request body

- UploadUrlRequest
  - `filename` string, required
  - `mimeType` string, required
  - `purpose` 'generation-input' | 'asset-design'

## Response `201`

Pre-signed upload URL

- UploadUrl
  - `fileId` string, uuid, required
  - `uploadUrl` string, required
  - `expiresIn` number, required

## Other responses

- `400`: Invalid request
- `401`: Authentication required or invalid
- `403`: Permission denied
- `404`: Resource unavailable or API feature disabled
- `429`: Rate limit exceeded
- `500`: Unexpected server error
- `503`: Service temporarily unavailable

---

[API](https://skmtc.dev/virtuall/apis/virtuall-external-api.md) - [All operations](https://skmtc.dev/virtuall/apis/virtuall-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/virtuall/apis/virtuall-external-api/revisions/2b3a30238ce0?raw)
