# Get report

Retrieve a report by its id.

Endpoint: GET /reports/{id}
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)
    OK

## Response 200 fields (application/json):

  - `id` (string)
    Unique identifier for the report. Use this value in subsequent API calls; it is stable for the lifetime of the report. Test-mode IDs carry a `_test_` infix (e.g. `rp_test_K9dM2pXqR4vN8tLZbWyHJa`); live-mode IDs have no infix.
    Example: rp_K9dM2pXqR4vN8tLZbWyHJa

  - `live_mode` (boolean)
    Whether this report was produced from an order created with a live API key (`true`) or a test API key (`false`). Test-mode reports are produced from canned provider responses and do not reflect real screening activity. See [Testing](/testing) for details.
    Example: true

  - `order_id` (string)
    Identifier of the order this report was produced for.
    Example: ord_TUyYsLnyTbG3xv9hONJF7w

  - `created_at` (string)
    Timestamp the report was created.

  - `updated_at` (string)
    Timestamp the report was last updated.

  - `criminal_history` (any)
    Report item for the criminal history product, or `null` if this product was not included in the order.

  - `criminal_history.id` (string)
    Unique identifier for the report item.
    Example: rpi_F3hQ7wEsLp2xBnVcRuMyTk

  - `criminal_history.status` (string | null)
    Resolved status of this report item:
* `clear` — no findings that warrant adjudication
* `consider` — something to review before making a decision. This does
not necessarily mean adverse information was found.

Null while the report item is still being assembled and no results have been recorded yet.
    Enum: "clear", "consider", "null"

  - `criminal_history.created_at` (string)
    Timestamp the report item was created.

  - `criminal_history.updated_at` (string)
    Timestamp the report item was last updated.

  - `criminal_history.records` (array)
    One entry per criminal case returned for the applicant, with the source it came from and the person it was matched to. Empty if no records were found.

  - `criminal_history.records.case_number` (string | null)
    Court-assigned case number identifying the matter.

  - `criminal_history.records.court_name` (string | null)
    Name of the court that handled the case.

  - `criminal_history.records.county` (string | null)
    County the case was filed in.

  - `criminal_history.records.state` (string | null)
    Two-letter USPS state code where the case was filed.
    Example: CA

  - `criminal_history.records.file_date` (string | null)
    Date the case was filed with the court.

  - `criminal_history.records.charges` (array)
    Charges filed under this case.

  - `criminal_history.records.charges.charge` (string | null)
    Description of the charge as recorded by the court.

  - `criminal_history.records.charges.statute` (string | null)
    Statute or legal code the charge was filed under.

  - `criminal_history.records.charges.type` (string | null)
    Classification of the charge as reported by the underlying court source.
Commonly one of `felony`, `misdemeanor`, `infraction`, or `violation`,
but other source-specific classifications may pass through.

  - `criminal_history.records.charges.offense_date` (string | null)
    Date the alleged offense occurred.

  - `criminal_history.records.charges.charge_date` (string | null)
    Date the charge was filed.

  - `criminal_history.records.charges.arrest_date` (string | null)
    The date the person was arrested.

  - `criminal_history.records.charges.disposition` (string | null)
    The court's most recent resolution of the charge. Returns the normalized
`disposition_type` value when available, otherwise the raw text as
reported by the source. Charges with multiple court actions surface
the latest one by `disposition_date`.

  - `criminal_history.records.charges.disposition_type` (string | null)
    Normalized disposition category. Known values: `conviction`, `dismissed`,
`expunged`, `pending`, `transferred`, `warrant`, `merged`, `invalid`,
`alternative_adjudication`, `unclassified`. Additional values may be
introduced over time. `null` when no normalized category could be assigned.

  - `criminal_history.records.charges.disposition_date` (string | null)
    Date the most recent disposition was entered.

  - `criminal_history.records.source` (any)
    The court or other source that produced the record. `null` when the upstream source returned no source metadata.

  - `criminal_history.records.source.name` (string | null)
    Human-readable name of the source (e.g. `California Megan's Law Registry`, `OFAC SDN`).

  - `criminal_history.records.source.category` (string | null)
    Category of source the match came from. Common values include
`sex offender registry`, `sanctions`, `healthcare`, and similar
regulatory list categories.

  - `criminal_history.records.source.county` (string | null)
    County the source covers, when applicable.

  - `criminal_history.records.source.state` (string | null)
    Two-letter USPS state code the source covers, when applicable.
    Example: CA

  - `criminal_history.records.person` (any)
    Identifying details of the person the record was matched to. `null` when the upstream source returned no person details.

  - `criminal_history.records.person.full_name` (string | null)
    Full name as recorded by the source.

  - `criminal_history.records.person.first_name` (string | null)
    Given name as recorded by the source.

  - `criminal_history.records.person.middle_name` (string | null)
    Middle name as recorded by the source.

  - `criminal_history.records.person.last_name` (string | null)
    Family name as recorded by the source.

  - `criminal_history.records.person.dob` (string | null)
    Date of birth as recorded by the source. Returned in truncated ISO 8601
form: `YYYY-MM-DD`, `YYYY-MM`, or `YYYY` when only a partial date is
known. `null` when the source does not publish a date of birth.

  - `criminal_history.records.person.gender` (string | null)
    Gender as recorded by the source.

  - `criminal_history.records.person.height` (string | null)
    Height in US units (feet and inches, e.g. `5'10"`).

  - `criminal_history.records.person.weight` (string | null)
    Weight in US units (pounds, e.g. `175 lb`).

  - `criminal_history.records.person.hair_color` (string | null)
    Hair color as recorded by the source.

  - `criminal_history.records.person.eye_color` (string | null)
    Eye color as recorded by the source.

  - `criminal_history.records.person.race` (string | null)
    Race as recorded by the source. May be withheld by source jurisdiction.

  - `criminal_history.records.person.photo_urls` (array)
    URLs of any photos published by the source. Empty array when none are available.

  - `criminal_history.records.person.aliases` (array)
    Other names the matched person is known by, as recorded by the source.

  - `criminal_history.records.person.addresses` (array)
    Addresses associated with the matched person, as recorded by the source.

  - `criminal_history.records.person.addresses.street` (string | null)
    Street line, including house/building number and street name. Apartment or unit numbers may be included.

  - `criminal_history.records.person.addresses.city` (string | null)
    City or municipality.

  - `criminal_history.records.person.addresses.state` (string | null)
    Two-letter US state code. `null` for non-US addresses.
    Example: CA

  - `criminal_history.records.person.addresses.zipcode` (string | null)
    US Postal Service ZIP code (5-digit or 9-digit ZIP+4). `null` for non-US addresses.

  - `criminal_history.records.person.addresses.country` (string | null)
    Two-letter ISO country code. Defaults to `US` when omitted by the source.
    Example: US

  - `criminal_history.records.person.addresses.county` (string | null)
    County the address is located in.

  - `credit_report` (any)
    Report item for the credit report product, or `null` if this product was not included in the order.

  - `credit_report.credit_file_status` (string)
    The status of the request for a credit file from a credit bureau. When the value is not `available`, a credit report cannot be generated.
| Value | Description |
|  --- | --- |
| `available` | Credit file was returned and a score was generated. |
| `frozen` | Applicant's credit file is frozen with the credit bureau. |
| `not_found` | Either the applicant has never used credit, or there's a mismatch in the information provided. |
| `thin_file` | A credit report could not be generated because the applicant has little or no credit history. |
    Enum: "available", "frozen", "not_found", "thin_file"

  - `credit_report.credit_score` (integer | null)
    Applicant's credit score. `null` when `credit_file_status` is not `available`.
    Example: 712

  - `credit_report.credit_score_factors` (array)
    Reasons behind the applicant's credit score, as reported by the bureau. Empty when the bureau returned none or `credit_file_status` is not `available`.

  - `credit_report.credit_score_factors.code` (string)
    Bureau-assigned reason code. Codes are specific to the bureau's scoring model.
    Example: 87

  - `credit_report.credit_score_factors.description` (string)
    Bureau's text for the reason code.
    Example: Unpaid collections

  - `credit_report.credit_summary` (any)
    Aggregate summary of the applicant's credit profile. `null` when `credit_file_status` is not `available`.

  - `credit_report.credit_summary.total_accounts` (integer)
    Total number of credit accounts on file for the applicant.
    Example: 8

  - `credit_report.credit_summary.on_time_payment_rate` (number | null)
    Share of payments made on time across all reporting accounts, expressed as a value between `0` and `1`.
    Example: 0.97

  - `credit_report.credit_summary.average_account_age_months` (integer | null)
    Average age of the applicant's credit accounts, in months.
    Example: 84

  - `credit_report.credit_summary.credit_utilization` (object)
    Revolving credit utilization across the applicant's reporting accounts.

  - `credit_report.credit_summary.credit_utilization.rate` (number | null)
    Ratio of balance to limit, expressed as a value between `0` and `1`.
    Example: 0.23

  - `credit_report.credit_summary.credit_utilization.balance_cents` (integer | null)
    Total revolving balance, in cents.

  - `credit_report.credit_summary.credit_utilization.limit_cents` (integer | null)
    Total revolving credit limit, in cents.

  - `credit_report.credit_summary.estimated_monthly_payment_cents` (integer | null)
    Estimated total monthly payment across all reporting accounts, in cents.
    Example: 142000

  - `credit_report.credit_summary.collections_count` (integer)
    Number of accounts in collections, as counted by the bureau. Can differ from the collection records this report returns.
    Example: 0

  - `credit_report.credit_summary.open_collections_balance_cents` (integer)
    Summed balance of every collection still carrying one, in cents. `0` when none are open.
Includes collections whose own `balance_cents` is withheld, so it is larger than the records alone account for and cannot be reconciled against them.
    Example: 219300

  - `credit_report.credit_summary.charge_offs_count` (integer)
    Number of accounts charged off by the lender.
    Example: 0

  - `credit_report.credit_summary.bankruptcies_count` (integer)
    Number of bankruptcies on file.
    Example: 0

  - `credit_report.credit_summary.payment_timeline` (array)
    Month-by-month payment behavior over the lookback window, ordered oldest to newest.

  - `credit_report.credit_summary.payment_timeline.month` (string)
    Month the entry covers, in `YYYY-MM` format.
    Example: 2026-02

  - `credit_report.credit_summary.payment_timeline.on_time_count` (integer)
    Number of payments made on time during the month.

  - `credit_report.credit_summary.payment_timeline.late_count` (integer)
    Number of payments made late during the month.

  - `credit_report.credit_summary.payment_timeline.on_time_rate` (number | null)
    Share of payments made on time during the month, expressed as a value between `0` and `1`.

  - `credit_report.collections` (any)
    Collection accounts behind `credit_summary.collections_count`.
`null` when `credit_file_status` is not `available`.

  - `credit_report.collections.records` (array)
    One entry per collection account. Empty when the applicant has none.

  - `credit_report.collections.records.original_creditor_name` (string | null)
    The business the debt was originally owed to, as the bureau reports it. Occasionally a category token rather than a business name (`MEDICAL`, `COLLECTION`), so treat it as an opaque label rather than parsing it.
`null` when the bureau reported no original creditor.
    Example: PARKSIDE PLACE APTS

  - `credit_report.collections.records.classification` (string | null)
    Industry of the original creditor.
`null` when the bureau reported no classification.
    Enum: "retail", "medical", "oil_company", "government", "personal_services", "insurance", "educational", "banking", "rental_leasing", "utilities", "cable_cellular", "financial", "credit_union", "automotive", "check_guarantee", "null"

  - `credit_report.collections.records.status` (string | null)
    Account status as reported by the bureau. `null` when it reported none.
    Example: Open

  - `credit_report.collections.records.open` (boolean)
    Whether the account is still open.
    Example: true

  - `credit_report.collections.records.ownership` (string | null)
    Who carries the account, in the bureau's ECOA vocabulary, as a human-readable label.
Also `null` when the bureau reports an unrecognized value.
    Example: Individual

  - `credit_report.collections.records.account_last4` (string | null)
    Last four characters of the account identifier. The full identifier is never returned. Also `null` when the bureau supplied no identifier.
    Example: 2511

  - `credit_report.collections.records.balance_cents` (integer | null)
    Amount currently owed on the account, in cents.
    Example: 172620

  - `credit_report.collections.records.past_due_cents` (integer | null)
    Portion of the balance that is past due, in cents. `0` when nothing is past due.
    Example: 172620

  - `credit_report.collections.records.opened_date` (string | null)
    Date the collection account was opened.
    Example: 2023-06-03

  - `credit_report.collections.records.closed_date` (string | null)
    Date the account was closed, if it has been.

  - `credit_report.collections.records.reported_date` (string | null)
    Date the furnisher last refreshed the account with the bureau.
    Example: 2026-08-16

  - `credit_report.collections.records.paid_date` (string | null)
    Date the account was paid, if it has been.

  - `credit_report.bankruptcies` (any)
    Bankruptcy public records behind `credit_summary.bankruptcies_count`, itemized.
`null` when `credit_file_status` is not `available`.

  - `credit_report.bankruptcies.records` (array)
    One entry per filing. Empty if no bankruptcies were reported.

  - `credit_report.bankruptcies.records.chapter` (integer | null)
    Chapter of the US Bankruptcy Code the case was filed under. `null` for an unrecognized filing type.
    Enum: "7", "13", "null"

  - `credit_report.bankruptcies.records.disposition` (string | null)
    How the case concluded, as a human-readable label.
`null` while the case is still open, or when the reported disposition is unrecognized.
    Example: discharged

  - `credit_report.bankruptcies.records.active` (boolean)
    Whether the case is still open. `true` when the filing has no recognized disposition, so an unrecognized outcome reads as active rather than asserting a conclusion.
    Example: false

  - `credit_report.bankruptcies.records.filed_date` (string | null)
    Date the case was filed.
    Example: 2017-01-19

  - `credit_report.bankruptcies.records.disposition_date` (string | null)
    Date the case concluded — not a payment date. The bureau sets it on dismissals and most discharges, and never while a case is open, so a concluded filing can still report `null` here.
    Example: 2017-02-28

  - `eviction_history` (any)
    Report item for the eviction history product, or `null` if this product was not included in the order.

  - `eviction_history.records` (array)
    One entry per eviction filing returned for the applicant. Empty if no records were found, or when `eviction_report_status` is `restricted`.

  - `eviction_history.records.case_number` (string | null)
    Court-assigned case number identifying the filing.

  - `eviction_history.records.plaintiff` (string | null)
    Party that filed the eviction action — typically the landlord or property manager.

  - `eviction_history.records.file_date` (string | null)
    Date the case was filed with the court.

  - `eviction_history.records.judgment` (string | null)
    Judgment outcome as reported by the underlying court source. Free-form text; vocabulary varies across jurisdictions. Null if no judgment has been entered.

  - `eviction_history.records.judgment_date` (string | null)
    Date the judgment was entered. Null if no judgment has been entered.

  - `eviction_history.records.judgment_amount_cents` (integer | null)
    Monetary amount of the judgment, in cents. Null if no monetary judgment was entered.

  - `eviction_history.eviction_report_status` (string)
    The status of the request for an eviction report. When the value is
not `available`, eviction history could not be searched.
| Value | Description |
|  --- | --- |
| `available` | The jurisdiction allowed a search and a report was produced, including a clear with zero records. |
| `restricted` | The jurisdiction prohibits furnishing the report. `records` is empty and item `status` is `consider`, meaning there is something to review, not that adverse records were found. |
    Enum: "available", "restricted"

  - `identity_verification` (any)
    Report item for the identity verification product, or `null` if this product was not included in the order.

  - `identity_verification.document_type` (any)
    Classification of the identity document that was submitted, or `null` if no results are available yet.

  - `identity_verification.document_type.type` (string | null)
    Type of identity document submitted. Possible values include: `Drivers License`, `Identification Card`, `Passport`, `Passport Card`, `Permanent Resident Card`, `Unknown`.
    Example: Drivers License

  - `identity_verification.document_type.country` (string | null)
    Three-letter ISO 3166-1 alpha-3 country code of the issuing country.
    Example: USA

  - `identity_verification.document_type.state` (string | null)
    Two-letter state or province code of the issuing authority, if applicable. Null for nationally-issued documents such as passports.
    Example: CA

  - `identity_verification.document_data` (any)
    Data extracted from the submitted document, or `null` if no results are available yet.

  - `identity_verification.document_data.first_name` (string | null)
    Given name as printed on the document.
    Example: Jane

  - `identity_verification.document_data.last_name` (string | null)
    Family name (surname) as printed on the document.
    Example: Public

  - `identity_verification.document_data.full_name` (string | null)
    Full name as printed on the document. May differ from the concatenation of `first_name` and `last_name` for documents that use a single name field.
    Example: Jane Public

  - `identity_verification.document_data.dob` (string | null)
    Date of birth printed on the document, in `YYYY-MM-DD` format.
    Example: 1990-05-14

  - `identity_verification.document_data.document_number` (string | null)
    Identifier assigned to the document by the issuing authority (e.g. driver's license number, passport number).
    Example: D1234567

  - `identity_verification.document_data.issue_date` (string | null)
    Date the document was issued, in `YYYY-MM-DD` format.
    Example: 2020-01-01

  - `identity_verification.document_data.expiration_date` (string | null)
    Date the document expires, in `YYYY-MM-DD` format.
    Example: 2028-01-01

  - `identity_verification.document_data.address` (any)
    Address printed on the document, parsed into components, or `null` if no address was extracted.

  - `identity_verification.document_data.address.street` (string | null)
    Primary street line.
    Example: 123 Example Street

  - `identity_verification.document_data.address.street2` (string | null)
    Secondary street line (unit, suite, apartment, etc.).
    Example: Suite 200

  - `identity_verification.document_data.address.city` (string | null)
    City.
    Example: Denver

  - `identity_verification.document_data.address.state` (string | null)
    Two-letter state or province code.
    Example: CO

  - `identity_verification.document_data.address.country` (string | null)
    Three-letter ISO 3166-1 alpha-3 country code.
    Example: USA

  - `identity_verification.document_data.address.zip` (string | null)
    Postal code.
    Example: 80033

  - `identity_verification.consider_reasons` (array)
    Reasons the verification resulted in a `consider` status. Empty when `status` is `clear` or `null`.
Each entry represents a distinct rejection category explaining why the verification did not pass.

  - `identity_verification.consider_reasons.category` (string)
    Machine-readable rejection category. Stable across releases; safe to branch on.
    Enum: "name_mismatch", "selfie_mismatch", "doc_expired", "doc_not_authentic", "doc_unsupported", "image_quality", "duplicate_identity", "suspected_fraud", "other"

  - `identity_verification.consider_reasons.label` (string)
    Human-readable description of the rejection category.
    Example: Document expired

  - `identity_verification.documents_zip_url` (string | null)
    Signed URL to download the document images captured during the verification session as a ZIP archive, or `null` if no document images are available. The URL is single-use and short-lived, and needs no authentication of its own — it can be handed straight to a browser.
To retrieve these images alongside the report's other documents in one authenticated call, use [`GET /reports/{id}/documents/zip`](#operation/get-report-documents-zip) instead.
    Example: https://tenant.checkr.com/api/identity_verification_documents/idvd_K9dM2pXqR4vN8tLZbWyHJa

  - `income_verification` (any)
    Report item for the income verification product, or `null` if this product was not included in the order.

  - `income_verification.verification_method` (string | null)
    How the income was verified. `bank` when the applicant linked their accounts, `document` when they uploaded proof of income. Null before verification begins.
    Example: document

  - `income_verification.current_as_of` (string | null)
    How current the findings are. For a bank connection, the date the account data was last refreshed. For documents, the last day the documents cover, which is not the date they were uploaded: `documents[].submitted_at` says that.
Null when only tax forms were supplied, which report a completed tax year rather than recent activity.

  - `income_verification.current_month_income` (any)
    Net and estimated gross income from a bank connection for the most recent full calendar month. For example, a report generated in August returns income for July. `month` identifies the month included.
Null when income was verified from documents or results are not yet available.

  - `income_verification.current_month_income.month` (string)
    Full calendar month covered by the totals, in `YYYY-MM` format.
    Example: 2024-11

  - `income_verification.current_month_income.net_cents` (integer | null)
    Net income across the identified streams for `month`, in cents.
    Example: 224546

  - `income_verification.current_month_income.estimated_gross_cents` (integer | null)
    Estimated gross income across the identified streams for `month`, in cents.
    Example: 269455

  - `income_verification.summary` (any)
    Aggregate income across the streams included in the report, or `null` if no results are available. The period covered by each field is described in the schema below.

  - `income_verification.summary.average_monthly_net_cents` (integer | null)
    Average monthly net income, in cents.
For bank verification, this is the sum of the monthly averages for all income streams. Each stream uses the requested period or the provider's observation period, as described in `income_streams[].average_monthly_net_cents`.
For document verification, annual tax forms are excluded. Net income from bank statements and paystubs is summed. The total is divided by the number of full calendar months in the requested period when the order specifies one. Otherwise, it is divided by the fractional number of calendar months covered by those documents; a day covered by multiple documents is counted once.
    Example: 393492

  - `income_verification.summary.total_past_12_months_net_cents` (integer | null)
    Net income over the past 12 months, in cents.

For bank verification, this is the sum of net income from streams with at least 12 months of history.

For document verification, this covers the latest tax year supplied rather than the 12 months preceding the report. It is gross income from supported tax forms, less only the tax withholdings stated on those forms. It is an estimate, not take-home pay. Null if any included form does not support this estimate.
    Example: 4721906

  - `income_verification.summary.average_monthly_estimated_gross_cents` (integer | null)
    Average monthly gross income, in cents.
For bank verification, gross income is estimated from net income over the same period as `average_monthly_net_cents`.
For document verification, gross income is stated by paystubs rather than estimated. Null unless paystubs state gross income for every stream included in `average_monthly_net_cents`.
    Example: 472191

  - `income_verification.summary.total_past_12_months_estimated_gross_cents` (integer | null)
    Gross income over the past 12 months, in cents.

For bank verification, this is the sum of estimated gross income from streams with at least 12 months of history.

For document verification, this covers the latest tax year supplied rather than the 12 months preceding the report. It is the sum of gross income stated on supported tax forms.
    Example: 5666287

  - `income_verification.accounts` (array)
    One entry per financial-institution account the applicant connected. Empty when the income was verified by document, and when no results are available yet.

  - `income_verification.accounts.id` (string)
    Unique identifier for the connected account.
    Example: ivac_K9dM2pXqR4vN8tLZbWyHJa

  - `income_verification.accounts.financial_institution_name` (string | null)
    Name of the financial institution holding the account.
    Example: Bank of America

  - `income_verification.accounts.account_type` (string | null)
    Type of account as reported by the financial institution. Free-form text; vocabulary varies across institutions (typical values include `Checking`, `Savings`, `Investment`, `401k`).
    Example: Checking

  - `income_verification.accounts.account_number_last4` (string | null)
    Last four digits of the account number. The full number is never returned.
    Example: 5131

  - `income_verification.accounts.account_owners` (array)
    Names listed as owners on the account. May contain multiple entries for jointly held accounts. Empty if no owners were reported.

  - `income_verification.accounts.active_from` (string | null)
    Date the account first became active (the earliest activity visible to the analysis).

  - `income_verification.accounts.current_balance_cents` (integer | null)
    Current balance on the account at the time the report was produced, in cents.
    Example: 1266287

  - `income_verification.accounts.average_monthly_balance_cents` (integer | null)
    Average monthly balance on the account over the analysis window, in cents.
    Example: 664336

  - `income_verification.accounts.insufficient_funds_count_last_6_months` (integer | null)
    Number of insufficient-funds (NSF) fee events on the account in the last six months.
    Example: 2

  - `income_verification.accounts.insufficient_funds_count_last_12_months` (integer | null)
    Number of insufficient-funds (NSF) fee events on the account in the report's analysis window (last 12 months).
    Example: 2

  - `income_verification.accounts.last_insufficient_funds_fee_at` (string | null)
    Date of the most recent insufficient-funds (NSF) fee on the account. Day-precision only. Null if no NSF fees have been observed in the analysis window.

  - `income_verification.accounts.income_streams` (array)
    Recurring deposit streams identified on this account. Empty if no recurring income was detected.

  - `income_verification.accounts.income_streams.id` (string)
    Unique identifier for the income stream.
    Example: ist_K9dM2pXqR4vN8tLZbWyHJa

  - `income_verification.accounts.income_streams.account_id` (string | null)
    The connected account this stream was identified on, matching an `id` in `accounts`. Null for a stream a document established.
    Example: ivac_K9dM2pXqR4vN8tLZbWyHJa

  - `income_verification.accounts.income_streams.source` (string | null)
    Best-effort display label for the income source, such as an employer or payer.
This value is not unique. Use `id` to identify a stream.
    Example: Enterprise One

  - `income_verification.accounts.income_streams.stream_type` (string | null)
    Classification of the stream as reported by the analysis. Free-form text — typical values include `Paycheck`, `Deposit`, `Transfer`. May be `null` when no transactions have been attributed to the stream.
    Example: Paycheck

  - `income_verification.accounts.income_streams.status` (string | null)
    Whether the income stream is still arriving at the time of the report. Free-form text.
    Example: Active

  - `income_verification.accounts.income_streams.start_date` (string | null)
    First day this stream's evidence covers. Null for a stream from a connected account, which reports months rather than days.

  - `income_verification.accounts.income_streams.end_date` (string | null)
    Last day this stream's evidence covers. Null for a stream from a connected account, which reports months rather than days.

  - `income_verification.accounts.income_streams.stream_history_days` (integer | null)
    Days of evidence behind this stream, counting a day covered by two documents once. Null for a stream from a connected account, which reports months. Exact, where `stream_history_months` is rounded and never zero, so a fortnight and a full month both read as `1` there.
    Example: 29

  - `income_verification.accounts.income_streams.start_month` (string | null)
    The same span at month precision. First month deposits were attributed to this stream, in `YYYY-MM` format.
    Example: 2022-09

  - `income_verification.accounts.income_streams.end_month` (string | null)
    Last month deposits were attributed to this stream, in `YYYY-MM` format. Null when the stream is still receiving deposits at the time of the report.
    Example: 2024-08

  - `income_verification.accounts.income_streams.stream_history_months` (integer | null)
    Number of months between `start_month` and `end_month` (or the report date, if the stream is still active). Rounded, so prefer `stream_history_days` for arithmetic.
    Example: 25

  - `income_verification.accounts.income_streams.deposit_frequency` (string | null)
    Typical cadence between deposits in this stream. Free-form text; may be a range (for example, `2-3 days`) when the cadence is irregular.
    Example: 14 days

  - `income_verification.accounts.income_streams.consistency_score` (string | null)
    Qualitative score reflecting how consistently deposits in this stream are classified as income. Free-form text.
    Example: High

  - `income_verification.accounts.income_streams.net_annual_cents` (integer | null)
    Annual net income from this stream, in cents.

For bank verification, reported only when the stream has at least 12 months of history. For a tax-form stream, this field reports gross income less only the tax withholdings stated on the form, so it is an estimate rather than take-home pay. Null for a stream established by a bank statement or paystub.
    Example: 5666287

  - `income_verification.accounts.income_streams.estimated_gross_annual_cents` (integer | null)
    Estimated gross annual income from this stream, in cents. Inferred from net deposits, so only a stream from a connected account reports one.
Null for a stream a document established, whose gross was stated rather than estimated and is reported in `gross_cents`.
    Example: 6799544

  - `income_verification.accounts.income_streams.average_monthly_net_cents` (integer | null)
    Average monthly net income from this stream, in cents.
For bank verification, total deposits for the stream are divided by the number of full calendar months in the requested period when the order specifies one. A month with no reported income adds zero to the total but still counts as one full month in the divisor. When there is no requested period, this is the provider's average over its observation period for the stream.
For document verification, this uses the same period and divisor as `summary.average_monthly_net_cents`.
Null for a stream established by a tax form because dividing an annual total by twelve would not represent observed monthly income.
    Example: 248096

  - `income_verification.accounts.income_streams.last_30_days_net_cents` (integer | null)
    Net income from this stream in the most recent month observed, in cents. `0` is valid. Null for a stream a document established, which reports no month-by-month detail.
    Example: 224500

  - `income_verification.accounts.income_streams.net_income_by_month` (array)
    Per-month breakdown of net deposits from this stream. Empty if no transactions have been observed in the analysis window.
Always empty for a stream a document established, which reports a total for the period it covers and no month-by-month detail. `current_month_income` is null for the same reason.

  - `income_verification.accounts.income_streams.net_income_by_month.month` (string)
    The month the totals cover, in `YYYY-MM` format.
    Example: 2024-05

  - `income_verification.accounts.income_streams.net_income_by_month.net_cents` (integer)
    Net deposits attributed to the stream during `month`, in cents. `0` is valid.
    Example: 269552

  - `income_verification.accounts.income_streams.net_income_by_month.transaction_count` (integer)
    Number of deposit transactions attributed to the stream during `month`.
    Example: 2

  - `income_verification.accounts.income_streams.net_cents` (integer | null)
    Net income from this stream between `start_date` and `end_date`, in cents. Null when nothing reported the net this payer deposited, which is the case for a tax form.
    Example: 382000

  - `income_verification.accounts.income_streams.gross_cents` (integer | null)
    Gross income from this stream between `start_date` and `end_date`, in cents. Not estimated: a paystub and a tax form both state gross outright.
Null when no document stated it, which is the case for a stream established only by bank statements, since deposits are net.
    Example: 480000

  - `income_verification.accounts.income_streams.document_ids` (array)
    The documents in `documents` that established this stream. Empty for a stream from a connected account.

  - `income_verification.income_streams` (array)
    Every income stream identified, whichever method established it. A stream a connected account produced names that account in `account_id`; one a document established names its evidence in `document_ids`.
Streams from a connected account also appear under that account in `accounts[].income_streams`. The two are the same objects, so read one or the other, never both, or the totals double.

  - `income_verification.documents` (array)
    Proof-of-income documents the applicant uploaded, oldest first. Empty when the income was verified by bank connection.

  - `income_verification.documents.id` (string)
    Unique identifier for the document, and what `income_streams[].document_ids` refers to.
    Example: inc_K9dM2pXqR4vN8tLZbWyHJa

  - `income_verification.documents.document_type` (string)
    What the document was classified as. Known values: `paystub`, `w2`, `1099`, `bank_statement`,
and `unknown` when the type could not be established, in which case no income was taken
from it. Additional types may be introduced over time.
    Example: paystub

  - `income_verification.documents.filename` (string | null)
    Name of the file as the applicant uploaded it.
    Example: paystub-june.pdf

  - `income_verification.documents.content_type` (string | null)
    MIME type of the document.
    Example: application/pdf

  - `income_verification.documents.period_start_date` (string | null)
    First day the document covers. A tax form covers its year, January 1 to December 31. Null when the dates could not be read.

  - `income_verification.documents.period_end_date` (string | null)
    Last day the document covers.

  - `income_verification.documents.risk_assessment` (any)
    Whether the document appears genuine. Null until the analysis has assessed it, which is not the same as a clean assessment.

  - `income_verification.documents.risk_assessment.level` (string | null)
    How strong the indicators of alteration are.
| Level | What was detected | Used for reported income |
|  --- | --- | --- |
| `low` | No significant anomalies were detected. Contents are internally consistent and metadata matches the conventions for the type. | Yes |
| `medium` | Minor inconsistencies, unusual metadata, or formatting that departs from the norm. Suggestive rather than conclusive. | Yes |
| `high` | Clear indicators, such as digital editing, structural or layout flaws, or signs of synthetic generation. | No |
| `null` | Not assessed: the analysis has not run yet, or this document type cannot be assessed. | No |

Known values are the three above; additional values may be introduced over time. Treat an
unrecognised level as not counted rather than as `low`.
    Example: low

  - `income_verification.documents.risk_assessment.summary` (string | null)
    Plain-language account of what the assessment found, naming the specific signals behind the level.
    Example: No fraud signals detected. Document metadata and content are consistent with a genuine bank export.

  - `income_verification.documents.checks` (object)
    What was verified about the document when it was uploaded. Each check is `true` when it passed, `false` when it failed, and `null` when it has not been evaluated, which is not the same as a failure.

  - `income_verification.documents.checks.document_type` (boolean | null)
    Whether the document is a type accepted as proof of income.

  - `income_verification.documents.checks.name_match` (boolean | null)
    Whether a name on the document matches the applicant.

  - `income_verification.documents.checks.recency` (boolean | null)
    Whether the document is recent enough to describe the applicant's current income.

  - `income_verification.documents.download_url` (string)
    Endpoint that returns the document itself — [`GET /reports/{id}/documents/{document_id}/download`](#operation/get-report-document). It requires the same authentication as any other request, so the URL alone grants no access. It addresses the document by id and does not expire. To fetch every document for the report in one call instead, see [`GET /reports/{id}/documents/zip`](#operation/get-report-documents-zip).
    Example: https://api.checkrtenant.com/v1/reports/rp_K9dM2pXqR4vN8tLZbWyHJa/documents/inc_K9dM2pXqR4vN8tLZbWyHJa/download

  - `income_verification.documents.submitted_at` (string | null)
    When the applicant submitted the document. Null if it has not been submitted.

  - `income_verification.documents.created_at` (string)
    When the document was first uploaded.

  - `income_verification.consider_reasons` (array)
    Reasons the verification resulted in a `consider` status. Empty when `status` is `clear` or `null`.
Each entry represents a distinct category explaining why the verification did not pass.

  - `income_verification.consider_reasons.category` (string)
    Machine-readable category. Stable across releases; safe to branch on.
    Enum: "applicant_declined"

  - `income_verification.consider_reasons.label` (string)
    Human-readable description of the category.
    Example: Applicant declined verification

  - `sex_offender_registry` (any)
    Report item for the sex offender registry product, or `null` if this product was not included in the order.

  - `sex_offender_registry.records` (array)
    One entry per registry match returned for the applicant. Empty if no matches were found.

  - `sex_offender_registry.records.source` (any)
    The registry or watchlist that returned the match. `null` when the upstream source returned no source metadata.

  - `sex_offender_registry.records.person` (any)
    Identifying details of the matched person as recorded by the source. `null` when the upstream source returned no person details.

  - `sex_offender_registry.records.cases` (array)
    Criminal cases associated with this match. Often empty for watchlist matches that do not carry court data.

  - `global_watchlist` (any)
    Report item for the global watchlist product, or `null` if this product was not included in the order.

  - `global_watchlist.records` (array)
    One entry per watchlist match returned for the applicant. Empty if no matches were found.

## 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 422:

  - `422` (unknown)
    Error response

## Response 422 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

