---
title: "Create Presigned Urls"
method: POST
path: "/v1/assets/presigned"
tags: ["assets", "public"]
---

# Create Presigned Urls

`POST /v1/assets/presigned`

Creates presigned URLs for uploading files associated with specific IDs.

This endpoint allows you to upload up to 20 files and associate each with an ID. It returns presigned URLs for uploading the files directly to the storage service.

**Parameters**

- **files** (*List[UploadFile]*): List of files to be uploaded (maximum of 20 files).
- **ids** (*List[str]*): List of IDs associated with the files.

**Returns**

`Dict`: A dictionary containing a message and a list of dictionaries mapping each ID to its presigned URL.

**Example Response**

```json
{
    "message": "Files uploaded successfully.",
    "presigned_urls": [
        {
            "id1": "https://s3.amazonaws.com/your-bucket/tmp_filename1"
        },
        {
            "id2": "https://s3.amazonaws.com/your-bucket/tmp_filename2"
        }
    ]
}
```

## Headers

- `API-Version` string — Pass in an API version to guarantee a consistent response format. The latest version should be used for all new API calls. Existing API calls should be updated to the latest version when possible. **Valid versions:** - Latest API version (recommended): `2025-03` - Previous API version (maintenance mode): `2025-02` If no API version header is included, the response format is considered unstable and could change without notice (not recommended).

## Response `200`

Successful Response

- object

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found
- `408` — Request Timeout
- `422` — Unprocessable Entity
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.dev/runtrellis/apis/trellis.md) · [All operations](https://skmtc.dev/runtrellis/apis/trellis/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runtrellis/trellis/revisions/b7d8570ff3cc/schema)
