---
title: "Import a bank (async)"
method: POST
path: "/v1/default/banks/{bank_id}/transfer/import"
tags: ["Bank Transfer"]
---

# Import a bank (async)

`POST /v1/default/banks/{bank_id}/transfer/import`

## Request

- Base URL: `https://hindsight.vectorize.io` (the document declares no server; this is the origin it was published from)
- URL: `https://hindsight.vectorize.io/v1/default/banks/{bank_id}/transfer/import`
- Auth: none declared
- TypeScript: <https://skmtc.dev/vectorize/apis/hindsight-http-api/docs/v1/default/banks/:bank_id/transfer/import/post.ts> (a function with typed inputs; its response is checked against the schema)

Submit a transfer archive (produced by the export endpoint) for import. Runs as a background operation: facts are re-embedded with the target bank's embedding model and entities are re-resolved — no LLM extraction, so the import costs no tokens and invents no new facts.

Two modes. `restore` (default) writes a whole bank into target_bank_id, which must NOT already exist — it restores a bank rather than merging into one, and is how a bank is moved between instances or copied under a new id. `merge` folds an archive's documents into this bank, with document_conflict deciding what happens to ids that already exist (skip, replace, new-id).

The include flags narrow what is restored to a subset of what the archive holds; they cannot add what the producer did not export. Returns an operation_id; poll GET /v1/default/banks/{bank_id}/operations/{operation_id} for status and per-component counts. The operation is recorded against {bank_id} even in restore mode, because the target bank does not exist yet.

## Path parameters

- `bank_id` string, required

## Query parameters

- `mode` string: restore (into a fresh bank) | merge (into this bank)
- `target_bank_id` string, nullable: restore mode: the bank to create; defaults to the archive's source bank
- `document_conflict` string: merge mode: skip | replace | new-id
- `include_data` boolean, nullable: restore mode: carry the memories and everything backing them (default true)
- `include_bank_config` boolean, nullable: restore mode: restore the bank's config overrides, directives and webhooks (default true)
- `include_history` boolean, nullable: restore mode: carry audit_log and llm_requests (default false)

## Headers

- `authorization` string, nullable

## Request body `multipart/form-data`

- BodyImportBankTransfer
  - `file` string, binary, required: Transfer ZIP archive

## Response `202`

Successful Response

- BankTransferSubmitResponse: Response for the unified bank-transfer endpoints (202). The transfer runs in the background; poll GET /v1/default/banks/{bank_id}/operations/{operation_id}. An export's ``result_metadata`` carries ``download_url`` / ``storage_key`` / ``byte_size`` / ``filename``; an import's carries the per-component counts.
  - `operation_id` string, required
  - `status` string

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-04** `4fda98b75f63`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/vectorize/apis/hindsight-http-api/changes/v1/default/banks/:bank_id/transfer/import/post.md)

---

[API](https://skmtc.dev/vectorize/apis/hindsight-http-api.md) - [All operations](https://skmtc.dev/vectorize/apis/hindsight-http-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vectorize/apis/hindsight-http-api/revisions/45e711cd0897?raw)
