Download Report PDF
Streams the archived PDF of a report run as the response body.
GET /api/organization/report-runs/:id/pdf
Streams the PDF archived for a report run directly in the response body. :id is the run's id (a UUID), as returned by List Report Runs. The run must belong to your organization. Available to any organization role, including read-only users.
The bytes are read from object storage server-side and returned to you; the object itself is never exposed as a URL, so the session/token check on this request is the entire access control for the file.
Only runs with format: "email_pdf" that completed successfully archive a PDF. Check hasPdf on the run before calling this endpoint. format: "email" runs, and runs that failed or were skipped, have no PDF and return 404.
Example (cURL)
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"
RUN_ID="9a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
curl -X GET "$BASE_URL/api/organization/report-runs/$RUN_ID/pdf" \
-H "Authorization: Bearer $TOKEN" \
-o report.pdfResponse
200 OK with the PDF bytes as the response body.
Content-Type: application/pdf, Content-Disposition: attachment; filename="report-<period>.pdf" (<period> is derived from the run's own period label, e.g. report-08-2026.pdf), Cache-Control: private, max-age=300, X-Content-Type-Options: nosniff.
Common errors
401 Unauthorized: not authenticated.403 Forbidden(forbidden): you do not have access to this organization.404 Not Found(reportRunNotFound): no run with this id exists for your organization.404 Not Found(reportRunNoPdf): the run has no archived PDF (it was an email-only report, or generation failed/was skipped).404 Not Found(reportPdfNotFound): the run record has a PDF path, but the object could not be read from object storage.