---
title: "A report generation's status, progress and outcome"
method: GET
path: "/reports/generations/{reportGenerationId}"
tags: ["Reports"]
---

# A report generation's status, progress and outcome

`GET /reports/generations/{reportGenerationId}`

Progress ({step, sectionsDone, sectionsTotal, message}) is written at most every 2 s while the generation is pending or running; poll every 2 s. Once finished it carries its result (draft_ready) or a user-worded error (failed). A generation that stopped responding is ended failed (STALE) when read. 404 when REPORTS_V2_ENABLED is off, and for a generation of another organization or workspace. Needs report.create.

## Response `200`

The generation

- ReportGenerationJobResponse
  - `data` ReportGeneration, required
    - `cancelRequested` boolean
    - `createdAt` string, date-time, required
    - `error` ReportGenerationError
      - `code` string, required — LEDGER_UNAVAILABLE, TIME_LIMIT, STALE, DISPATCH_FAILED, INTERRUPTED, REPORT_GONE or INTERNAL.
      - `message` string, required — Shown to the user as written.
    - `finishedAt` string, date-time
    - `framework` string, required — ghg, vsme or management.
    - `generationId` string, required
    - `options` object, required
    - `period` object, required
      - `end` string, date, required — Inclusive.
      - `start` string, date, required
    - `progress` ReportGenerationProgress, required
      - `message` string, required — Plain words for the step, e.g. Reading your data.
      - `sectionsDone` integer, required
      - `sectionsTotal` integer, required — The sections the report will show; known once the data is read.
      - `step` string, required — queued, reading, writing, checking, saving or done.
    - `reportId` string, required — The report the generation writes. A new report exists once the status is draft_ready.
    - `result` ReportGenerationResult
      - `failedChecks` integer, required
      - `missingItems` integer, required — Required items not provided (the cover banner's count).
      - `proseUnavailable` boolean, required — The automatic summaries were unavailable; every block uses standard wording.
      - `reportId` string, required
      - `standardWordingBlocks` integer, required — Prose blocks whose automatic text did not pass the checks.
      - `versionId` string, required
      - `versionNumber` integer, required
    - `startedAt` string, date-time
    - `status` string, required — pending, running, draft_ready, failed or cancelled.
    - `updatedAt` string, date-time, required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

## Changes

- **2026-10-04** `77d466d0e73d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/reports/generations/:reportGenerationId/get.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/77d466d0e73d?raw)
