---
title: "Complete report generation"
method: POST
path: "/v1/private/projects/{projectId}/reports/{reportId}/complete"
tags: ["Reports"]
---

# Complete report generation

`POST /v1/private/projects/{projectId}/reports/{reportId}/complete`

Callback from Ollie to update report status and content after generation.

## Path parameters

- `projectId` string, uuid, required
- `reportId` string, uuid, required

## Request body

- ReportCompleteRequest
  - `content` string
  - `status` 'pending' | 'completed' | 'failed', required
  - `session_id` string
  - `recommended_actions` JsonNode
  - `failure_reason` string — Why the report failed. Only 'out_of_credits' is acted on; any other value is recorded but renders as a generic failure.

## Response `204`

Report updated

## Other responses

- `400` — Status is not terminal
- `404` — Report not found

## Changes

- **2026-08-19** `bcd13aadaaf8` — 1 breaking, 2 info
  - request body became required
  - added the new optional request property `failure_reason`
  - added the non-success response with the status `400`
- **2026-06-12** `39dc698f3952` — 1 info
  - endpoint added
- **2026-05-04** `d606e84c75e4` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/comet-ml/apis/opik-rest-api/changes/v1/private/projects/:projectId/reports/:reportId/complete/post.md)

---

[API](https://skmtc.dev/comet-ml/apis/opik-rest-api.md) · [All operations](https://skmtc.dev/comet-ml/apis/opik-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/comet-ml/opik-rest-api/revisions/a835604ec403/schema)
