---
title: "Admin Publishers Backfill Intake"
method: POST
path: "/v1/admin/publishers/backfill-intake"
---

# Admin Publishers Backfill Intake

`POST /v1/admin/publishers/backfill-intake`

## 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/publishers/backfill-intake`
- Auth: none declared

Unblock cold-outreach publishers whose articles were stuck at
``render_status=skipped_paywall``. For each slug we look at the most
recent ``max_articles_per_publisher`` articles, re-fetch each
source URL, re-evaluate the paywall heuristic against the fresh
body, and (when public) flip ``is_public_post=True``, refresh
body_text, and enqueue a render job.

Returns per-publisher counts: ``scanned``, ``flipped_public``,
``enqueued``, ``still_paywalled``, ``fetch_failed``,
``no_articles``, ``no_intake_source``.

Idempotency: publishers that already have >=1 ``done`` render job
are skipped entirely (they're not actually blocked — the fire-batch
failure is something else and an operator should investigate).

## Headers

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

## Request body

- BackfillIntakeBody
  - `publisher_slugs` string[]
  - `dry_run` boolean
  - `max_articles_per_publisher` 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)
