---
title: "Assemble a resumable vault upload and queue import"
method: POST
path: "/v1/vault/import-uploads/{id}/complete"
tags: ["vault"]
---

# Assemble a resumable vault upload and queue import

`POST /v1/vault/import-uploads/{id}/complete`

## Request

- Base URL: `https://api.hyperresearch.ai`
- URL: `https://api.hyperresearch.ai/v1/vault/import-uploads/{id}/complete`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `hr_session`

Assemble the uploaded parts, verify the whole archive against the declared size and SHA-256, and queue the import job. Poll the returned job with `GET /v1/jobs/{id}`.

## Path parameters

- `id` string, required

## Request body

- object
  - `parts` object[], required
    - `part_number` integer, required
    - `etag` string, required
    - `sha256` string, required
    - `size_bytes` integer, required
  - `total_bytes` integer, required
  - `archive_sha256` string, required

## Response `202`

Import queued

- VaultJobCreated
  - `job_id` string, required
  - `kind` 'export' | 'import', required
  - `status` 'queued', required

## Other responses

- `400`: Invalid request
- `401`: Authentication failed
- `403`: Insufficient scope or plan
- `404`: Not found
- `429`: Rate limited or over quota
- `500`: Internal error

---

[API](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api.md) · [All operations](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/revisions/726ef831ebf4?raw)
