---
title: "Complete Direct Upload"
method: POST
path: "/api/v1/files/uploads/{upload_id}/complete"
tags: ["files"]
---

# Complete Direct Upload

`POST /api/v1/files/uploads/{upload_id}/complete`

## 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/{upload_id}/complete`
- Auth: none declared

Land a file the browser has sent to storage.

Verifies the staged object (it exists and fits the type's ceiling), then
persists it like ``POST /files/upload``. A file within the buffered ceiling
is read back and analyzed in the request, so the response is the same
(``state='pending'`` with ``sheets`` when the import wizard is needed, or
the dataset stubs being parsed). A larger CSV or Parquet file is committed
and parsed by the worker, which creates its datasets (``databases`` is
empty). Completing an upload that already landed returns that file.

## Path parameters

- `upload_id` string, uuid, required

## Request body

- DirectUploadCompleteRequest: Complete one direct upload; ``name`` and ``folder_path`` as declared.
  - `name` string, required
  - `folder_path` string, nullable

## Response `201`

Successful Response

- UserFileUploadResponse
  - `id` string, uuid, required
  - `name` string, required
  - `file_type` string, required
  - `size_bytes` integer, required
  - `created_at` string, date-time, required
  - `replaced` boolean
  - `state` string
  - `sheets` SheetAnalysis[]
    - `name` string, nullable
    - `header_row_index` integer, nullable
    - `columns` string[]
    - `preview_rows` array[]
      - string[]
    - `fail_reason` string, nullable
  - `databases` DatabaseStub[]
    - `id` string, uuid, required
    - `name` string, required
    - `refresh_status` string, required

## Other responses

- `422`: Validation Error

## Changes

> 62 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/:upload_id/complete/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/1a58b92e3498?raw)
