---
title: "Re-derive stored note titles through the title rule"
method: POST
path: "/v1/admin/backfills/note-titles"
tags: ["vault"]
---

# Re-derive stored note titles through the title rule

`POST /v1/admin/backfills/note-titles`

## Request

- Base URL: `https://api.hyperresearch.ai`
- URL: `https://api.hyperresearch.ai/v1/admin/backfills/note-titles`
- Auth: API key in cookie `hr_session`

Rewrites stored titles the shared title rule rejects — page chrome ("Close dialog"), bare hostnames, and filename stems ("EPRG2503", "REPORT FINAL", "ec.europa.eu — IP 26 1714 EN") — to the title the rule derives from the note body and URL. A title the rule ACCEPTS is never re-derived, and one rejected title is never traded for another. Dry run unless `apply=1`.

## Query parameters

- `apply` '0' | '1': Omit (or `0`) for a DRY RUN: the response lists every row that would change and nothing is written. `1` performs the rewrite.
- `max_notes` integer: Ceiling on notes read in one request (default 2000). `truncated` says whether it was hit.

## Response `200`

What changed, or would change

- BackfillTitleSummary
  - `workspace_id` string, required
  - `scanned` integer, required
  - `found` integer, required
  - `rewritten` integer, required
  - `already_safe` integer, required
  - `by_reason` object, required
  - `applied` boolean, required
  - `truncated` boolean, required: The `max_notes` ceiling was reached; run it again to continue.
  - `rows` BackfillTitlePlan[], required
    - `note_id` string, required
    - `reason` string, required: Why the stored title was rejected: `ui-chrome`, `host-only`, `filename-stem`, `format-metadata`, `image-alt`, `byline`, `url-label`, `site-name`, `social-network`, `bare-slug`, `empty`. Written by the one title rule, so this list grows with it.
    - `from_title` string, required
    - `to_title` string, 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)
