---
title: "Retry a failed public factor reclassification"
method: POST
path: "/factor/utility-reclassify-jobs/{jobId}/retry"
tags: ["Factor Manage"]
---

# Retry a failed public factor reclassification

`POST /factor/utility-reclassify-jobs/{jobId}/retry`

Queues the organizations a failed job did not finish again, with their attempts reset, and starts the job (202 with the job, now queued). Only Greentally platform staff holding the factor_library.write platform capability may do it (403 PLATFORM_CAPABILITY_REQUIRED otherwise, checked before the body); a non-blank reason is required (400) and recorded with the job before and after in the platform audit trail (action factor_entry.utility_reclassify.retry, target the job's factor). 409 when the job is not failed.

## Path parameters

- `jobId` string, required

## Request body

- UtilityReclassifyJobRetryRequest
  - `reason` string — Why the job is retried. Required and non-blank (recorded in the platform audit trail).

## Response `202`

The job, queued again.

- UtilityReclassifyJobResponse
  - `data` UtilityReclassifyJob, required
    - `attempts` integer, required — Times a runner picked the job up.
    - `createdAt` string, date-time, required
    - `createdBy` string, required
    - `factorEntryId` string, required
    - `finishedAt` string, date-time, nullable, required
    - `id` string, uuid, required
    - `lastError` string, nullable, required
    - `orgsDone` integer, required
    - `orgsFailed` integer, required
    - `orgsTotal` integer, required
    - `rowsEstimate` integer, required — Rows using the factor when the job was queued.
    - `rowsReclassified` integer, required — Rows reclassified so far.
    - `rowsReset` integer, required — Rows cleared for reclassification so far (rows using the factor and the non-carbon rows of their documents).
    - `status` 'queued' | 'running' | 'done' | 'failed', required — failed when an organization still failed after its retries (lastError says which).
    - `updatedAt` string, date-time, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict

## Changes

- **2026-10-02** `766c2a40e369` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/factor/utility-reclassify-jobs/:jobId/retry/post.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greentally/apis/esgai-api/revisions/5c524454c847?raw)
