---
title: "Complete a dataset upload and trigger processing"
method: POST
path: "/api/v1/datasets/upload/complete"
tags: ["Dataset"]
---

# Complete a dataset upload and trigger processing

`POST /api/v1/datasets/upload/complete`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/adaptionlabs/apis/adaption-api/docs/api/v1/datasets/upload/complete/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- CompleteUploadDto
  - `s3_key` string, required: S3 object key returned in the pre-signed URL response from /upload/initiate
  - `name` string, required: Human-readable name for the dataset
  - `file_format` 'csv' | 'json' | 'jsonl' | 'parquet' | 'pdf' | 'docx' | 'pptx' | 'xlsx' | 'html' | 'zip' | 'txt', required: Format of the uploaded file
  - `file_size_bytes` number, required: Size of the uploaded file in bytes

## Response `202`

- CompleteUploadResponseDto
  - `dataset_id` string, required: ID of the newly created dataset
  - `status` string: Dataset status after `POST /upload/complete`. `preprocessing_failed` when the uploaded files do not share one column schema. Omitted by provider initiate endpoints, which finish in the background.

## Changes

- **2026-10-29** `b38d4dc031db`: 1 info
  - added the optional property `status` to the response with the `202` status
- **2026-10-20** `7398ff1eeeba`: 1 warning
  - removed the request property `defer_adaption`

[Operation history](https://skmtc.dev/adaptionlabs/apis/adaption-api/changes/api/v1/datasets/upload/complete/post.md)

---

[API](https://skmtc.dev/adaptionlabs/apis/adaption-api.md) - [All operations](https://skmtc.dev/adaptionlabs/apis/adaption-api/llms.txt) - [OpenAPI document](https://skmtc.dev/adaptionlabs/apis/adaption-api/revisions/d4cf908c19a0?raw)
