# DeepResearchReport

Object

A Deep Research report in the current workspace, whoever started it.

## Fields

| Name | Type | Description |
| --- | --- | --- |
| `completedAt` | [`DateTimeWithZone`](/api/v2/docs/types/date-time-with-zone) | When it completed; null while running or after a failure. |
| `createdAt` | [`DateTimeWithZone`](/api/v2/docs/types/date-time-with-zone) | When the report was created. |
| `errorMessage` | `String` | Why a failed report failed. |
| `id` | `ID!` | Report UUID. Pass it to `deepResearchReport(id:)` to poll it. |
| `inputType` | [`DeepResearchInputType`](/api/v2/docs/types/deep-research-input-type) | The source kind it ran on; null when Deep Research did not say or the source is not one of the `DeepResearchInputType` kinds. |
| `markdown` | `String` | The finished report as Markdown. Returned by `deepResearchReport(id:)` only, once the report has completed; null in `deepResearchReports` and while it runs. |
| `phase` | `String` | The step a running report is on. |
| `postsAnalyzed` | `Int` | How many posts it read. |
| `progressMessage` | `String` | Human-readable progress of a running report. |
| `running` | `Boolean!` | Whether Deep Research still lists the report as in flight; poll until it is false. False for COMPLETED, FAILED and CANCELLED, and for a PROCESSING report an earlier version of Deep Research left paused. It follows the status Deep Research holds, not whether work is happening: a report that stalls in flight stays true until Deep Research fails or cancels it, so cap how long you poll, for example by giving up once `createdAt` is hours old. |
| `shareUrl` | `String` | Public link to the finished report; null until it completes. |
| `sourceId` | `String` | Id of the source it ran on. |
| `sourceName` | `String` | Name of the source it ran on. |
| `status` | [`DeepResearchReportStatus!`](/api/v2/docs/types/deep-research-report-status) | Lifecycle status: PENDING, FETCHING and PROCESSING are in flight; COMPLETED, FAILED and CANCELLED are final. A report can also read PROCESSING while it is in a step this list does not name separately. Use `running`, not the status, to decide whether to keep polling. |
| `templateSlug` | `String` | The template the report ran. |
| `title` | `String` | The report title, as the Archive app shows it. |
