---
title: "Generate a pre-signed upload URL for a model pack file"
method: POST
path: "/v1/model-packs/upload-url"
tags: ["Model Packs"]
---

# Generate a pre-signed upload URL for a model pack file

`POST /v1/model-packs/upload-url`

Returns a pre-signed S3 PUT URL for uploading a file (image/video/any) to [modelId]/[packId]/[fileName]. The request data is echoed back in the response so the client can persist it.

## Headers

- `x-api-key` string, required

## Request body

- CreateUploadUrlRequestDto
  - `modelId` string, required — Model identifier, used as the top-level S3 folder
  - `packId` string, required — Pack identifier, used as the second-level S3 folder
  - `fileName` string — File name to store under the pack. When omitted, a UUID-based name is generated (with an extension derived from contentType, if provided)
  - `contentType` string — MIME type the client will send in the PUT request, e.g. image/png or video/mp4

## Response `201`

Upload URL generated successfully

---

[API](https://skmtc.dev/miaai/apis/backend-template-api.md) · [All operations](https://skmtc.dev/miaai/apis/backend-template-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/miaai/backend-template-api/revisions/2a8d88a5124f/schema)
