---
title: "Get report status and results"
method: GET
path: "/sessions/reports/{sessionId}"
tags: ["Reports"]
---

# Get report status and results

`GET /sessions/reports/{sessionId}`

Poll the status of a report created via `POST /api/v2/sessions/reports`.

### Status transitions

- **processing** — Elicit is actively searching, screening, and extracting data. You can watch progress in real time at the `url`.
- **pausedForInsufficientQuota** — The account exceeded its usage limit mid-run. The report stays paused until resumed via the `links.resume` URL (or the Elicit web interface) once the limit is resolved.
- **completed** — The report is finished. The `result` field contains the report content.
- **failed** — Something went wrong. The `error` field contains details.
- **unknown** — Status is not tracked for this report (legacy or user-created reports).

### Polling recommendation

Poll every 30–60 seconds. Reports typically complete in 5–15 minutes depending on the number of papers.

### Including the full report body

By default, the `reportBody` and `abstract` fields are omitted to keep polling responses lightweight. To include them, add `?include=reportBody` to the request.

### Example

```bash
# Poll for status
curl https://elicit.com/api/v2/sessions/reports/{sessionId} \
  -H "Authorization: Bearer elk_live_your_key_here"

# Fetch with full report body
curl "https://elicit.com/api/v2/sessions/reports/{sessionId}?include=reportBody" \
  -H "Authorization: Bearer elk_live_your_key_here"
```

## Path parameters

- `sessionId` string, uuid, required — The session ID (UUID) returned by the create endpoints and `GET /sessions`

## Query parameters

- `include` 'reportBody' — Set to 'reportBody' to include the full report markdown and abstract in the response

## Response `200`

Report status and results (if completed).

- ReportSessionDetail
  - `type` 'report', required
  - `sessionId` string, uuid, required — The session ID (UUID) returned by the create endpoints and `GET /sessions`
  - `status` 'processing' | 'pausedForInsufficientQuota' | 'completed' | 'failed' | 'unknown', required — Current status of the report. Transitions: processing ⇄ pausedForInsufficientQuota (paused when the account exceeds its usage limit; stays paused until explicitly resumed via the resume endpoint or the Elicit web interface), processing → completed/failed. Poll until completed or failed.
  - `executionStage` 'gathering_sources' | 'screening_abstract' | 'screening_fulltext' | 'extracting_data' | 'generating_report' | 'done' | 'null', nullable, required — Current pipeline stage. Advances through gathering_sources → screening_abstract → extracting_data → generating_report → done. Null for reports created before this field was introduced or when the stage isn't known.
  - `url` string, required — URL to view the report in the Elicit web interface
  - `isPublic` boolean, required — Whether the report is publicly accessible via its URL without authentication
  - `result` ReportResult
    - `title` string, required — Auto-generated title for the report
    - `summary` string, required — AI-generated executive summary of the findings
    - `reportBody` string, nullable — Full report content in markdown format. Only included when ?include=reportBody is specified.
    - `abstract` string, nullable — Report abstract in markdown format. Only included when ?include=reportBody is specified.
  - `error` object — Error details, only present when status is failed
    - `code` string, required — Machine-readable error code
    - `message` string, required — Human-readable error message
  - `pdfUrl` string, nullable — Pre-signed URL to download the report as PDF. Only present when status is completed and assets have been generated. Expires after 7 days — re-fetch the report for a fresh URL.
  - `docxUrl` string, nullable — Pre-signed URL to download the report as DOCX. Only present when status is completed and assets have been generated. Expires after 7 days — re-fetch the report for a fresh URL.
  - `txtUrl` string, nullable — Pre-signed URL to download the report's reference list as a plain-text (APA) file. Only present when status is completed and the report has a non-empty bibliography. Expires after 7 days — re-fetch the report for a fresh URL.
  - `bibUrl` string, nullable — Pre-signed URL to download the report's references as a BibTeX (.bib) file. Only present when status is completed and the report has a non-empty bibliography. Expires after 7 days — re-fetch the report for a fresh URL.
  - `risUrl` string, nullable — Pre-signed URL to download the report's references as an RIS (.ris) file. Only present when status is completed and the report has a non-empty bibliography. Expires after 7 days — re-fetch the report for a fresh URL.
  - `links` SessionLinks, required
    - `self` string, required — API URL for this session's full status and results (the typed get endpoint for its type)
    - `resume` string — API URL to resume this session. Present only while the session is paused for insufficient quota.

## Other responses

- `401` — Authentication failed. The API key is missing, invalid, revoked, or expired.
- `403` — API access is not available on your current plan. Upgrade to Pro or above to use the API.
- `404` — Report not found. Either the report ID is invalid or the report belongs to a different user.

---

[API](https://skmtc.dev/elicit/apis/elicit-api.md) · [All operations](https://skmtc.dev/elicit/apis/elicit-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/elicit/elicit-api/revisions/2b42624536e5/schema)
