---
title: "Start a resumable vault import upload"
method: POST
path: "/v1/vault/import-uploads"
tags: ["vault"]
---

# Start a resumable vault import upload

`POST /v1/vault/import-uploads`

## Request

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

Reserve a resumable upload for a vault archive (tar.gz) larger than a single request allows. Send the total size and SHA-256; the response gives the upload id, the fixed part size (8 MiB) and when the reservation expires (24 h). Starting again with the same size and hash returns the existing upload, so an interrupted client can resume.

## Request body

- object
  - `total_bytes` integer, required
  - `archive_sha256` string, required

## Response `201`

Upload reserved

- object
  - `upload_id` string, required
  - `chunk_size_bytes` integer, required
  - `max_bytes` integer, required
  - `expires_at` string, required
  - `status` 'open' | 'completed', required
  - `job_id` string

## 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)
