---
title: "Move notes to a folder (idempotent)"
method: POST
path: "/api/notes/batch-move"
tags: ["Notes"]
---

# Move notes to a folder (idempotent)

`POST /api/notes/batch-move`

## Request

- Base URL: `https://api.engram.page`
- URL: `https://api.engram.page/api/notes/batch-move`
- Auth: HTTP bearer

Moves multiple notes into the folder identified by `target_folder_id` (or the literal `"root"` for the vault root) in one transaction and returns the moved count. Requires the `X-Idempotency-Key` header. Returns 404/409 (with `item_id`) if any id is missing or conflicts.

## Request body

- BatchMoveNotesRequest
  - `ids` string[], required
  - `target_folder` string: Destination folder path (alternative to target_folder_id; "" = vault root). Use this to move into a derived folder that has no marker.
  - `target_folder_id` string: Folder UUID or "root".

## Response `200`

Moved count

- MovedCount
  - `moved` integer, required

## Other responses

- `400`: Invalid input
- `404`: Some ids not found
- `409`: Conflict
- `422`: Target path cleans to nothing

---

[API](https://skmtc.dev/engram/apis/engram-api.md) · [All operations](https://skmtc.dev/engram/apis/engram-api/llms.txt) · [OpenAPI document](https://skmtc.dev/engram/apis/engram-api/revisions/8c4c2eec29dc?raw)
