---
title: "Start the retro category pass on the workers. Admin only."
method: POST
path: "/api/v1/admin/followed/classify-backfill"
tags: ["Followed Accounts Admin"]
---

# Start the retro category pass on the workers. Admin only.

`POST /api/v1/admin/followed/classify-backfill`

## Request

- Base URL: `https://api.avatarfactory.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.avatarfactory.io/api/v1/admin/followed/classify-backfill`
- Auth: one of:
  - API key in cookie `session`
  - HTTP bearer

<br/>Returns the counts as they were BEFORE the run, so the same endpoint's GET<br/>can be compared against them once the task drains. A second POST inside the<br/>single-flight window answers 409; past it, a re-run is safe and continues<br/>where the last one stopped, because a classified account drops out of the<br/>candidate set for a week.

## Request body

- ClassifyBackfillRequest: Start the retro classification pass. Every field optional. ``limit`` runs it in slices, ``dry_run`` reports the plan without spending anything, ``only_missing`` narrows to accounts with no category at all.
  - `dry_run` boolean
  - `limit` integer, nullable
  - `only_missing` boolean

## Response `200`

OK

- ClassifyBackfillQueuedResponse
  - `before` CategoryCountsResponse, required: Where the taxonomy stands: the before and after of a backfill run.
    - `candidates` integer
    - `categorised` integer
    - `other` integer
    - `total` integer
    - `uncategorised` integer
  - `ok` boolean
  - `queued` boolean
  - `task_id` string, nullable

## Other responses

- `409`: Conflict
- `422`: Unprocessable Entity
- `503`: Service Unavailable

---

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