---
title: "Admin Scrub Leaked Slugs"
method: POST
path: "/v1/admin/articles/scrub-leaked-slugs"
---

# Admin Scrub Leaked Slugs

`POST /v1/admin/articles/scrub-leaked-slugs`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/admin/articles/scrub-leaked-slugs`
- Auth: none declared

PII · re-slug articles whose slug literally contains an
operator-personal email fragment. The slug was derived from the
forward preamble before the 2026-05-12 intake fix and is now part
of every share URL + OG card + RSS guid. Body scrub already ran;
this fixes the URL-layer leak.

Saves the OLD slug into ``raw_json['previous_slugs']`` so a future
redirect resolver can map old shares to the new slug.

## Headers

- `x-storyflo-email-token` string, nullable

## Request body

- ScrubLeakedSlugsBody
  - `dry_run` boolean
  - `limit` integer

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
