---
title: "Initiate Direct Uploads"
method: POST
path: "/api/v1/files/uploads"
tags: ["files"]
---

# Initiate Direct Uploads

`POST /api/v1/files/uploads`

## Request

- Base URL: `https://api.netter.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.netter.ai/api/v1/files/uploads`
- Auth: none declared

Sign a storage target for each declared file (up to 500 per call).

Each file is validated as ``POST /files/upload`` would validate it (type,
size, target folder and EDITOR on a pre-existing folder). A file that would
be refused gets ``error`` and ``status_code`` instead of a target; the rest
of the batch is still signed. Nothing is created until completion.

## Request body

- DirectUploadInitiateRequest
  - `files` DirectUploadFile[], required
    - `name` string, required
    - `size` integer, required
    - `content_type` string, nullable
    - `folder_path` string, nullable

## Response `200`

Successful Response

- DirectUploadInitiateResponse
  - `uploads` DirectUploadTarget[], required
    - `index` integer, required
    - `upload_id` string, uuid, nullable
    - `upload_url` string, nullable
    - `fields` object
    - `max_bytes` integer, nullable
    - `error` string, nullable
    - `status_code` integer, nullable
  - `expires_in` integer, required

## Other responses

- `422`: Validation Error

## Changes

> 61 revisions in range; 1 not diffed.

- **2026-10-26** `5a6bd3150b8b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/netter/apis/dmi-backend/changes/api/v1/files/uploads/post.md)

---

[API](https://skmtc.dev/netter/apis/dmi-backend.md) - [All operations](https://skmtc.dev/netter/apis/dmi-backend/llms.txt) - [OpenAPI document](https://skmtc.dev/netter/apis/dmi-backend/revisions/68e89013efe0?raw)
