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

# Complete a batch upload and trigger processing

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

## Request

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

Any TXT files in the batch are converted to csv/jsonl. Batches that still contain documents (pdf/docx/pptx/xlsx/html, or unpacked zip contents) move to awaiting_preprocessing and wait for an explicit launch-preprocessing call. Batches with only tabular formats (csv/json/jsonl/parquet, plus any converted-from-TXT files) move directly to column extraction.

## Request body

- CompleteBatchDto
  - `dataset_id` string, required: Dataset ID from initiate-batch
  - `files` CompleteBatchFileDto[], required
    - `s3_key` string, required: S3 key returned from initiate-batch
    - `file_name` string, required: Original file name
    - `file_format` 'csv' | 'json' | 'jsonl' | 'parquet' | 'pdf' | 'docx' | 'pptx' | 'xlsx' | 'html' | 'zip' | 'txt', required: File format
    - `file_size_bytes` number, required: File size in bytes

## Response `202`

- CompleteBatchResponseDto
  - `dataset_id` string, required: Dataset ID
  - `status` string, required: Current dataset status

## Changes

- **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-batch/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)
