---
title: "Complete a reserved partner upload. BaseCite verifies the server-streamed SHA-256, mirrors it to AWS quarantine, then starts the existing malware/OCR processing path."
method: POST
path: "/api/v1/organizations/{org_id}/partner-uploads/complete"
---

# Complete a reserved partner upload. BaseCite verifies the server-streamed SHA-256, mirrors it to AWS quarantine, then starts the existing malware/OCR processing path.

`POST /api/v1/organizations/{org_id}/partner-uploads/complete`

## Request

- Base URL: `https://api.basecite.com`
- URL: `https://api.basecite.com/api/v1/organizations/{org_id}/partner-uploads/complete`
- Auth: none declared. Required headers: `Idempotency-Key`

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `upload_id` string, required
  - `parts` object[], required
    - `part_number` integer, required
    - `sha256` string
    - `size_bytes` integer
  - `client_file_sha256` string, required

## Response `200`

Upload processing accepted or idempotent replay returned

- CompletePartnerUploadResponse
  - `request_id` string
  - `trace_id` string
  - `data` object
    - `upload_id` string
    - `pipeline_id` string
    - `status` string
    - `sequence` integer
    - `sha256` string

## Other responses

- `202`: Upload accepted as an asynchronous processing job; poll the canonical upload status resource until a terminal state.
- `409`: Multipart ledger or digest verification failed

---

[API](https://skmtc.dev/basecite/apis/basecite-stable-ai-context-api.md) · [All operations](https://skmtc.dev/basecite/apis/basecite-stable-ai-context-api/llms.txt) · [OpenAPI document](https://skmtc.dev/basecite/apis/basecite-stable-ai-context-api/revisions/2a269a68ba07?raw)
