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

# Clone a bank (async)

`POST /v1/default/banks/{bank_id}/clone`

## 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}/clone`
- Auth: none declared
- TypeScript: <https://skmtc.dev/vectorize/apis/hindsight-http-api/docs/v1/default/banks/:bank_id/clone/post.ts> (a function with typed inputs; its response is checked against the schema)

Copy this bank into a new one, in a single call. The clone starts with the source's memories as they are at clone time and evolves independently from then on: later retains, consolidation and edits on either bank leave the other alone.

This is the export and import above run back to back on this instance, so nothing is re-extracted and no LLM is called — facts are re-embedded and entities re-resolved, exactly as a restore does. The same three flags choose what the clone inherits: include_data (documents, facts, observations, attachments, the curation archive, the operations log, and the mental models and knowledge pages synthesized from them), include_bank_config (the bank's config overrides, directives and **webhooks**) and include_history (audit_log, llm_requests).

Note the webhooks: they travel with the bank's configuration, so a clone made with the default flags will call the source's webhook endpoints. Pass include_bank_config=false, or delete them on the clone, when they point at a per-bank consumer.

target_bank_id must not already exist. Returns an operation_id, recorded against the source bank (the target does not exist yet); poll GET /v1/default/banks/{bank_id}/operations/{operation_id} for status and the per-component counts.

## Path parameters

- `bank_id` string, required

## Query parameters

- `target_bank_id` string, required: Bank to create; must not already exist
- `include_data` boolean: Copy the memories, what backs them, and the mental models and knowledge pages synthesized from them
- `include_bank_config` boolean: Copy the bank's config overrides, directives and webhooks
- `include_history` boolean: Copy audit_log and llm_requests

## Headers

- `authorization` string, nullable

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

- `404`: The bank does not exist.
- `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/clone/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)
