# Download report PDF

Download the report as a PDF file. The PDF is generated and returned
synchronously in a single response — the bytes (`application/pdf`)
come back on the same call, with no polling or callback. Generation
can take several seconds when a fresh render is required, so
configure your HTTP client's **read timeout to at least 60 seconds**
for this endpoint to avoid prematurely aborting in-progress renders.
**Handling failures.** Rendering can fail transiently for various reasons.
It is suggested that if you encounter an error, you should retry the request,
within a reasonable policy.

Endpoint: GET /reports/{id}/pdf
Version: 1.0
Security: bearer-token

## Security:

  - `bearer-token` (unknown)
    http bearer

## Path parameters:

  - `id` (string, required)
    Id of the report.

## Header parameters:

  - `Checkr-Tenant-Version` (string)
    CalVer-dated API version to pin behavior to (e.g. `2026-04-29`). When omitted,
the request is served by the newest supported version. Unknown values return 422.

## Response 200:

  - `200` (unknown)
    The PDF file.

## Response 200 headers (application/pdf):

  - `Content-Disposition` (string)
    Attachment disposition with the report's canonical filename.

  - `Cache-Control` (string)
    Always `private, no-store` — the PDF contains PII and must not
be cached by intermediaries or the client.

## Response 401:

  - `401` (unknown)
    Error response

## Response 401 fields (application/json):

  - `errors` (array)
    One or more errors describing why the request failed.

  - `errors.code` (string)
    Machine-readable error type. Stable across releases; safe to branch on. Possible values:
* `authorization_error` (401)
* `forbidden` (403)
* `not_found_error` (404)
* `validation_error` (422)
* `internal_error` (500)
* `no_payment_method` (402) — no card on file for the organization. Add a card in Settings → Billing, then retry the request.
* `card_declined` (402) — the saved card was declined. Update the card on file or use a different one, then retry the request with a new `Idempotency-Key`.
* `authentication_required` (402) — the saved card requires interactive authentication and cannot be charged. Replace the saved card with one that supports off-session payments.

  - `errors.detail` (string)
    Human-readable explanation of this specific occurrence.

  - `errors.source` (object)
    Pointer to the input that caused the error. Returned for validation errors to identify the offending field; absent otherwise.

  - `errors.source.pointer` (string)
    JSON Pointer path to the offending attribute.
    Example: /email

## Response 403:

  - `403` (unknown)
    Error response

## Response 403 fields (application/json):

  - `errors` (array)
    One or more errors describing why the request failed.

  - `errors.code` (string)
    Machine-readable error type. Stable across releases; safe to branch on. Possible values:
* `authorization_error` (401)
* `forbidden` (403)
* `not_found_error` (404)
* `validation_error` (422)
* `internal_error` (500)
* `no_payment_method` (402) — no card on file for the organization. Add a card in Settings → Billing, then retry the request.
* `card_declined` (402) — the saved card was declined. Update the card on file or use a different one, then retry the request with a new `Idempotency-Key`.
* `authentication_required` (402) — the saved card requires interactive authentication and cannot be charged. Replace the saved card with one that supports off-session payments.

  - `errors.detail` (string)
    Human-readable explanation of this specific occurrence.

  - `errors.source` (object)
    Pointer to the input that caused the error. Returned for validation errors to identify the offending field; absent otherwise.

  - `errors.source.pointer` (string)
    JSON Pointer path to the offending attribute.
    Example: /email

## Response 404:

  - `404` (unknown)
    Error response

## Response 404 fields (application/json):

  - `errors` (array)
    One or more errors describing why the request failed.

  - `errors.code` (string)
    Machine-readable error type. Stable across releases; safe to branch on. Possible values:
* `authorization_error` (401)
* `forbidden` (403)
* `not_found_error` (404)
* `validation_error` (422)
* `internal_error` (500)
* `no_payment_method` (402) — no card on file for the organization. Add a card in Settings → Billing, then retry the request.
* `card_declined` (402) — the saved card was declined. Update the card on file or use a different one, then retry the request with a new `Idempotency-Key`.
* `authentication_required` (402) — the saved card requires interactive authentication and cannot be charged. Replace the saved card with one that supports off-session payments.

  - `errors.detail` (string)
    Human-readable explanation of this specific occurrence.

  - `errors.source` (object)
    Pointer to the input that caused the error. Returned for validation errors to identify the offending field; absent otherwise.

  - `errors.source.pointer` (string)
    JSON Pointer path to the offending attribute.
    Example: /email

## Response 500:

  - `500` (unknown)
    Generation failed transiently for various reasons. If you encounter an error, you should retry the request,
within a reasonable policy.

## Response 500 fields (application/json):

  - `errors` (array)
    One or more errors describing why the request failed.

  - `errors.code` (string)
    Machine-readable error type. Stable across releases; safe to branch on. Possible values:
* `authorization_error` (401)
* `forbidden` (403)
* `not_found_error` (404)
* `validation_error` (422)
* `internal_error` (500)
* `no_payment_method` (402) — no card on file for the organization. Add a card in Settings → Billing, then retry the request.
* `card_declined` (402) — the saved card was declined. Update the card on file or use a different one, then retry the request with a new `Idempotency-Key`.
* `authentication_required` (402) — the saved card requires interactive authentication and cannot be charged. Replace the saved card with one that supports off-session payments.

  - `errors.detail` (string)
    Human-readable explanation of this specific occurrence.

  - `errors.source` (object)
    Pointer to the input that caused the error. Returned for validation errors to identify the offending field; absent otherwise.

  - `errors.source.pointer` (string)
    JSON Pointer path to the offending attribute.
    Example: /email

