> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://www.truework.com/docs/api-reference/previous-versions/2022-08-01/get-verification-report/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://www.truework.com/_mcp/server. # Get One Report GET https://api.truework-sandbox.com/verification-requests/{verification_request_id}/reports/{verification_report_id} Retrieves a Report for a given Verification id with multiple reports. If you don't have the report id, it is recommended to use the embedded `reports` key from `GET /verification-requests/{verification_id}` to retrieve reports. You can get the report in PDF format by adding `Accept: application/pdf` to your headers. When testing, please use the generated curl command with `--output ` specified. \ > Only completed Verifications have Reports associated with them. Any other request will fail with either 400 or 404, and provide more information as an attached error message. > Reports are also embedded into the Verification object returned from get and get one. Reference: https://www.truework.com/docs/api-reference/previous-versions/2022-08-01/get-verification-report ## Authentication - `Authorization` header (bearer token, required) — Bearer tokens conform to the [RFC6750](https://datatracker.ietf.org/doc/html/rfc6750#section-2.1) spec. Production API keys (secret keys) are prefixed with `tw_sk_` and sandbox keys are prefixed with `tw_sk_test_`. If your secret key is published, you should rotate your API keys. Truework.JS publishable keys are prefixed with `tw_pk_` and `tw_pk_test` respectively. **Examples** - For Authorization Headers: `Authorization: Bearer tw_sk_test_e508eb797edb95ade85284bcb54dd49ed45db1be` - For the "try it now" `token` field, input only the token itself, omitting `Bearer `. ## Servers - `https://api.truework-sandbox.com` (Sandbox, default) - `https://api.truework.com` (Production) ## Request ### Path parameters - `verification_request_id` (string, required) — Verification ID - `verification_report_id` (string, required) — Report ID ### Query parameters - `income_analytics` (boolean, optional, default: false) — Whether to calculate income analytics for the nested reports in each verification. - `fields` (string, optional, nullable) — Comma-separated names of fields to include in the response. If omitted, all fields are included ### Headers - `Accept` (enum, optional, default: application/json) — Specify the content type and version that the API should use. It's recommended to include this to avoid breaking changes. - Allowed values: `application/json`, `application/pdf`, `application/json; version=2022-08-01`, `application/pdf; version=2022-08-01` ## Response ### 200 OK - `additional_notes` (string, required, nullable) - `created` (datetime, required) - `current_as_of` (date, required) - `d1c_eligible` (boolean, required, nullable) — Returns true if this report is eligible for Day 1 Certainty - `disputes` (list of DisputeV20220801, required) — Disputes that are currently open and relevant to this report - `du_reference_id` (string, required, nullable) — This is the reference ID to submit to Fannie Mae for purposes of getting Day 1 Certainty - `employee` (EmployeeV20220801, required) - `employer` (EmployerV20220801, required) - `id` (string, required) - `income_analytics` (ReportIncomeAnalyticsVMinimumVersion, required, nullable) — Calculated income features. Only returned if the `income_analytics` query parameter is provided and is `true` and the employee status on the report is active. - `paid_through_date` (date, required, nullable) — The pay period end date of the most recent paystub (falling back to the pay date if no pay period end is set). This field is only populated for VOIE reports and will be null for non-VOIE reports or when no paystubs exist. - `paystubs` (list of PaystubV20220801, required, nullable) — Individual paystubs for each pay period. Paystubs are returned sorted in descending order from most recent to least recent pay date. - `pricing_tier` (enum, required, nullable) - Allowed values: `instant`, `credentials`, `smart-outreach`, `third-party-providers`, `other` - `respondent` (RespondentV20220801, required, nullable) - `verification_request` (VerificationRequestV20220801, required) ## Errors ### 400 Bad Request Error Verification not found - `error` (_InvalidRequestError, required) ### 401 Unauthorized Error The request's authorization is missing, invalid, or expired - `error` (Error, required) ### 403 Forbidden Error Forbidden - `error` (Error, required) ### 406 Not Acceptable Error An invalid API version was requested - `error` (Error, required) ### 429 Too Many Requests Error Too Many Requests - `error` (Error, required) ### 451 Unavailable for Legal Reasons Error Frozen SSN - `error` (Error, required) ### 500 Internal Server Error Internal Server Error - `error` (Error, required) ### 501 Not Implemented Error Not Implemented - `error` (Error, required) ## Types ### DisputeV20220801 - `created` (datetime, required) - `description` (string, required) — Description of dispute - `id` (string, required) — ID for this dispute in Truework - `reference_id` (string, required) — ID for this dispute to be displayed and referenced outside of this API ### EmployeeV20220801 - `address` (AddressV20220801, required, nullable) - `earnings` (list of EarningsV20220801, required, nullable) - `email` (string, required, nullable) - `first_name` (string, required) - `hired_date` (date, required, nullable) - `last_name` (string, required) - `on_leave_date` (date, required, nullable) - `positions` (list of PositionV20220801, required) - `salary` (SalaryV20220801, required, nullable) - `social_security_number` (string, required, nullable) — The employee's obfuscated social security number - `status` (enum, required) — There are five employment statuses available on the `status` field in `Employee`: | VALUE | DESCRIPTION | VERSION INTRODUCED | OLDER VERSION VALUE | | ---------------- | ------------------------------------------------------------------- | ------------------ | ------------------- | | active | The employee is currently employed and working for this employer | | | | inactive | The employee is not employed at this employer anymore | | | | unknown | Truework could not determine the employment status of this employee | | | | furloughed-covid | The employee was furloughed due to COVID-19 | `2020-12-07` | inactive | | non-employee | Truework could not find record of this employee | `2020-12-07` | unknown | | other | No other value exemplifies the Verification Report Status | `2022-08-01` | | - Allowed values: `active`, `inactive`, `unknown`, `furloughed-covid`, `non-employee`, `other` - `status_detail` (enum, required) — The `status_detail` provides more granular information for some `status` values: | VALUE | DESCRIPTION | `Status` | | ------------------ | ------------------------------------------------------------------- | ---------------- | | active | The employee is currently employed and working for this employer | active | | int-assignment | The employee is on international assignment | active | | casual | The employee is employed casually | active | | long-term-dis | The employee is on long term disability | active | | sick-leave | The employee is on sick leave | active | | surviving-spouse | The employee is a surviving spouse | inactive | | inactive | The employee is not employed at this employer anymore | inactive | | on-leave | The employee is on leave | active | | multiple-positions | The employee has multiple active positions | active | | new-employee | The employee is new | active | | lay-off | The employee was laid off | inactive | | part-time | The employee is currently employed on a part time basis | active | | retired | The employee is retired | inactive | | separated | The employee is separated | inactive | | season | The employee is seasonal | active | | temporary | The employee is temporary | active | | intern | The employee is an intern | active | | transferred | The employee has been transferred | active | | deceased | The employee is deceased | inactive | | severed-pay | The employee has been severed with pay | inactive | | on-sabbatical | The employee is on sabbatical | active | | divested | The employee is part of a divested population | active | | temp-inactive | The employee is temporarily inactive | inactive | | full-time | The employee is full time | active | | non-emp-ben | The employee is a non employee beneficiary | inactive | | not-assignment | The employee is not currently on assignment | inactive | | not-payroll | The employee is not currently on payroll | inactive | | active-as-needed | The employee is active as needed | active | | unknown | Truework could not determine the employment status of this employee | unknown | | furloughed-covid | The employee was furloughed due to COVID-19 | furloughed-covid | | non-employee | Truework could not find record of this employee | non-employee | | other | No other value exemplifies Verification Status Detail | other | - Allowed values: `active`, `int-assignment`, `casual`, `long-term-dis`, `sick-leave`, `surviving-spouse`, `inactive`, `on-leave`, `multiple-positions`, `new-employee`, `lay-off`, `part-time`, `retired`, `separated`, `season`, `temporary`, `intern`, `transferred`, `deceased`, `severed-pay`, `on-sabbatical`, `divested`, `temp-inactive`, `full-time`, `non-emp-ben`, `not-assignment`, `not-payroll`, `active-as-needed`, `unknown`, `furloughed-covid`, `non-employee`, `other`, `future-employee` - `termination_date` (date, required, nullable) ### EmployerV20220801 - `address` (AddressV20220801, required, nullable) - `government_ids` (list of _GovernmentId, required, nullable) - `name` (string, required) ### ReportIncomeAnalyticsVMinimumVersion - `annualized_income` (_AnnualizedIncome, required, nullable) - `income_volatility` (_IncomeVolatility, required, nullable) ### PaystubV20220801 - `base` (string, required, nullable) — Pre-deduction base pay - `bonus` (string, required, nullable) — Pre-deduction bonus pay - `commission` (string, required, nullable) — Pre-deduction commission pay - `gross` (string, required, nullable) — Total pre-deduction earnings for this pay period - `id` (string, required) — ID for this paystub in Truework - `net` (string, required, nullable) — Total post-deduction earnings for this pay period - `other` (string, required, nullable) — Pre-deduction other pay - `overtime` (string, required, nullable) — Pre-deduction overtime pay - `pay_date` (date, required, nullable) — Date of paycheck delivery - `pay_period_end_date` (date, required, nullable) — Last day of pay period - `pay_period_hours` (string, required, nullable) — Hours worked in this pay period - `pay_period_start_date` (date, required, nullable) — First day of pay period - `reference_id` (string, required, nullable) — ID for this paystub from the payroll provider ### RespondentV20220801 - `email` (string, required, nullable) - `full_name` (string, required, nullable) - `title` (string, required, nullable) ### VerificationRequestV20220801 - `created` (datetime, required) - `id` (string, required) - `type` (enum, required) - Allowed values: `employment-income`, `employment`, `tenant-screening`, `assets` ### _InvalidRequestError - `message` (string, required, default: Invalid field values provided) ### Error - `message` (string, required) ### AddressV20220801 - `address` (string, required, nullable) - `city` (string, required, nullable) - `country_code` (string, required, nullable) - `country_subdivision_code` (string, required, nullable) - `extended_address` (string, required, nullable) - `postal_code` (string, required, nullable) ### EarningsV20220801 - `base` (string, required) - `bonus` (string, required) - `commission` (string, required) - `other` (string, required) - `overtime` (string, required) - `termination` (boolean, required) - `total` (string, required) - `year` (string, required, nullable) ### PositionV20220801 - `employment_type` (enum, required) — | VALUE | DESCRIPTION | VERSION INTRODUCED | OLDER VERSION VALUE | | ----------------- | -------------------------------- | ------------------ | ------------------- | | regular-full-time | Regular full time | | | | regular-part-time | Regular part time | | | | contractor-1099 | Contractor | | | | other | Other or unknown employment type | | | | no-answer | Question was not answered | `2020-12-07` | other | - Allowed values: `regular-full-time`, `regular-part-time`, `contractor-1099`, `other`, `no-answer` - `end_date` (date, required, nullable) - `start_date` (date, required, nullable) - `title` (string, required, nullable) ### SalaryV20220801 - `hours_per_week` (string, required, nullable) - `pay_frequency` (enum, required, nullable) — The frequency by which the employee is paid. - Allowed values: `annually`, `daily`, `semiweekly`, `monthly`, `weekly`, `biweekly`, `bimonthly`, `semimonthly`, `quarterly`, `semiannually`, `thirteen-monthly`, `fourteen-month`, `hourly`, `variable`, `other` - `pay_rate` (PayRateV20220801, required) — Describes the amount and unit that determine the employees pay. - `reduced_covid` (enum, required) - Allowed values: `yes`, `no`, `unknown` ### _GovernmentId - `id` (string, required) - `type` (enum, required) - Allowed values: `us-fein`, `other` ### _AnnualizedIncome - `amount` (MoneyAmountVMinimumVersion, required) — This field is being deprecated. This field is the same as gross_amount. If gross_amount returns `null`, this field will be returned with `0.00` as a value. - `base_amount` (MoneyAmountVMinimumVersion, required, nullable) — Represents annualized income for recurring income, like salary. In rare cases due to data quality issues, gross amount is returned without base amount or vice versa. - `gross_amount` (MoneyAmountVMinimumVersion, required, nullable) — Represents base annualized income plus variable income sources. In rare cases due to data quality issues, gross amount is returned without base amount or vice versa. - `short_employment_warning` (boolean, required) — True if the employee recently started at this position, which could impact annualized income accuracy. - `stale_data_warning` (boolean, required) — True if the data on this report is not fresh, which could impact annualized income accuracy. - `variable_income_warning` (boolean, required) — True if the employees income has high variability, which could impact annualized income accuracy. ### _IncomeVolatility - `gross_income_volatility` (string, required, nullable) — Coefficient of variation of the aggregated per pay period gross earnings for a given list of paystubs. ### PayRateV20220801 - `amount` (string, required, nullable) — The amount the employee gets paid per timeframe defined by the adject unit field. - `unit` (enum, required, nullable) — The timeframe in which the employee gets paid the amount defined in the adjacent amount field. - Allowed values: `annually`, `daily`, `semiweekly`, `monthly`, `weekly`, `biweekly`, `bimonthly`, `semimonthly`, `quarterly`, `semiannually`, `thirteen-monthly`, `fourteen-month`, `hourly`, `variable`, `other` ### MoneyAmountVMinimumVersion - `amount` (string, required, nullable) - `currency` (enum, required, nullable) - Allowed values: `USD` ## Examples **Response** ```json { "additional_notes": "string", "created": "2021-12-20T18:50:20.291247Z", "current_as_of": "2021-12-20", "d1c_eligible": true, "disputes": [ { "created": "2021-12-20T18:50:20.291247Z", "description": "Employee Title", "id": "AAAAAAAAAL8AElevkrw2n2vI8ScqGJEf50Lfg4W9LiQXwi-KSmg7DH0P", "reference_id": "d75346a0-a747-4907-a506-639ea436f2b0" } ], "du_reference_id": "string", "employee": { "address": { "address": "1234 Rainbow Road", "city": "San Francisco", "country_code": "US", "country_subdivision_code": "CA", "extended_address": "Suite 300", "postal_code": "98265" }, "earnings": [ { "base": "35000.00", "bonus": "0.00", "commission": "100.25", "other": "0.00", "overtime": "200.00", "termination": false, "total": "35300.25", "year": "2020" } ], "email": "string", "first_name": "Jane", "hired_date": "2023-01-15", "last_name": "Doe", "on_leave_date": "2023-01-15", "positions": [ { "employment_type": "regular-full-time", "end_date": "2023-01-15", "start_date": "2023-01-15", "title": "Software Engineer" } ], "salary": { "hours_per_week": "40", "pay_frequency": "biweekly", "pay_rate": { "amount": "150000.00", "unit": "annually" }, "reduced_covid": "yes" }, "social_security_number": "***-**-0000", "status": "active", "status_detail": "active", "termination_date": "2023-01-15" }, "employer": { "address": { "address": "1234 Rainbow Road", "city": "San Francisco", "country_code": "US", "country_subdivision_code": "CA", "extended_address": "Suite 300", "postal_code": "98265" }, "government_ids": [ { "id": "123456789", "type": "us-fein" } ], "name": "string" }, "id": "AAAAAAAADU8ACy03lGitY_ocCMCcgproUq8Gt4r37MM6GbyX2-DxWM3Y", "income_analytics": { "annualized_income": { "amount": { "amount": "34.95", "currency": "USD" }, "base_amount": { "amount": "34.95", "currency": "USD" }, "gross_amount": { "amount": "34.95", "currency": "USD" }, "short_employment_warning": true, "stale_data_warning": true, "variable_income_warning": true }, "income_volatility": { "gross_income_volatility": "string" } }, "paid_through_date": "2023-01-15", "paystubs": [ { "base": "7000.00", "bonus": "1000.00", "commission": "0.00", "gross": "8000.00", "id": "AAAAAAAAAmEADp7bmZJNhm4Kr5FM_ty5A_JX-Rxh04GSIHwmIRyp6Xss", "net": "5500.00", "other": "0.00", "overtime": "0.00", "pay_date": "2023-01-15", "pay_period_end_date": "2023-01-15", "pay_period_hours": "86.67", "pay_period_start_date": "2023-01-15", "reference_id": "6894632654" } ], "pricing_tier": "instant", "respondent": { "email": "string", "full_name": "string", "title": "string" }, "verification_request": { "created": "2021-12-20T18:50:20.291247Z", "id": "AAAAAAAAEboABwQhKv1_pWO7MWtZs28ksPTH0uSt6GffsoIJPj7e69P1", "type": "employment" } } ``` **SDK Code** ```python import requests url = "https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.truework-sandbox.com/verification-requests/verification_request_id/reports/verification_report_id")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```