{"info":{"_postman_id":"047be8fd-2667-411b-9e0a-171160b189ce","name":"Verification of Rent API","description":"<html><head></head><body><p>The RenterFile API allows you to request landlord reference checks inside your software.</p>\n<h1 id=\"about-renterfile\">About RenterFile</h1>\n<p>Our landlord reference check automation software contacts your applicant's landlords asking them to provide a rental verification online. Our system also follows up with the landlords four times per day via email and text messages until they respond. This results in 80.4% of landlords responding to our verification of rent requests. Those who respond do so extremely fast (on average in 16 hours or less).</p>\n<h1 id=\"about-renterfile-api\">About RenterFile API</h1>\n<p>The RenterFile API enables PropTech software to add landlord reference checks to their existing tenant screening offering without their clients even needing to leave your software. You can request a landlord reference from RenterFile and our team will reach out to landlords and get them to respond with a landlord reference about their tenant. Once we have a landlord reference report for you, you will be able to show that report inside your software.</p>\n<h1 id=\"authentication\">Authentication</h1>\n<p>All endpoints in this collection use <strong>API Key</strong> authentication. Send your API key on every request using the <code>api-key</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>api-key: YOUR_API_KEY\n\n</code></pre><p>Configure these Postman environment variables before sending requests:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>API_KEY</code></td>\n<td>Your RenterFile API key</td>\n</tr>\n<tr>\n<td><code>API_URL</code></td>\n<td>Base URL for the environment you are calling</td>\n</tr>\n<tr>\n<td><code>FILE_ID</code></td>\n<td>Set automatically after consent file upload</td>\n</tr>\n<tr>\n<td><code>REQUEST_ID</code></td>\n<td>Set automatically after creating a landlord reference request</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"environments\">Environments</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Environment</th>\n<th>Base URL</th>\n<th>Usage</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Staging</td>\n<td><code>https://dev.renterfile.com</code></td>\n<td>Development and testing; no charges. Contact <a href=\"https://mailto:support@renterinc.com\">support@renterinc.com</a> for access.</td>\n</tr>\n<tr>\n<td>Production</td>\n<td><code>https://renterfile.com</code></td>\n<td>Live traffic. Contact our team when you are ready for production access.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Append <code>?_format=json</code> to all request URLs.</p>\n<h1 id=\"typical-workflow\">Typical workflow</h1>\n<ol>\n<li><p><strong>Upload Consent File</strong> — upload the applicant's signed consent document. Save the returned <code>fid</code> as <code>FILE_ID</code>.</p>\n</li>\n<li><p><strong>Request Landlord Reference</strong> — submit the verification request. Save the returned <code>requestId</code> as <code>REQUEST_ID</code>.</p>\n</li>\n<li><p><strong>Request Status</strong> or <strong>Request Progress Report</strong> — poll for updates, or use the webhook (<code>PostbackUri</code>) if configured.</p>\n</li>\n<li><p><strong>Modify Request</strong> <em>(optional)</em> — correct details while <code>requestStatus</code> is <code>pending_landlord_response</code>.</p>\n</li>\n<li><p><strong>Cancel Request</strong> <em>(optional)</em> — cancel while <code>requestStatus</code> is <code>pending_landlord_response</code> or <code>landlord_legitimacy_check</code>.</p>\n</li>\n<li><p><strong>Get Reference Report</strong> — retrieve the full report when <code>requestStatus</code> is a completed variant.</p>\n</li>\n</ol>\n<h1 id=\"request-lifecycle\">Request lifecycle</h1>\n<p>Poll <strong>Request Status by ID</strong> to track progress. Webhook payloads (<code>PostbackUri</code>) include the <code>requestStatus</code> machine name.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><code>requestStatus</code></th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>pending_landlord_response</code></td>\n<td>Waiting for the landlord to provide a landlord reference. Requests can be <strong>modified</strong> in this state.</td>\n</tr>\n<tr>\n<td><code>landlord_legitimacy_check</code></td>\n<td>We've received the landlord reference and are confirming that it came from the property's legitimate landlord or property manager before completing the report.</td>\n</tr>\n<tr>\n<td><code>completed_verified_landlord</code></td>\n<td>The landlord reference report is complete, and the landlord was successfully verified as a legitimate owner or property manager. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>completed_landlord_not_verified</code></td>\n<td>The landlord reference report is complete, but we were unable to verify that the reference came from the property's legitimate landlord or property manager. Review the report before relying on the reference. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>completed_invalid_landlord</code></td>\n<td>The landlord reference report is complete. The reference did not come from the property's legitimate landlord or property manager. Review the report for details. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>expired_no_landlord_response</code></td>\n<td>The request expired because the landlord did not respond before the expiration period set by the requester.</td>\n</tr>\n<tr>\n<td><code>declined</code></td>\n<td>The landlord declined to provide a landlord reference.</td>\n</tr>\n<tr>\n<td><code>canceled</code></td>\n<td>The request was canceled by the requester or an administrator.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"webhooks-postbacks\">Webhooks (postbacks)</h1>\n<p>When you create a landlord reference request with <code>PostbackUri</code>, RenterFile sends HTTP <code>POST</code> callbacks to that URL as the request progresses.</p>\n<p>Configure the webhook when calling <strong>Request a new landlord reference</strong>:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PostbackUri</code></td>\n<td>HTTPS URL that receives webhook payloads</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>PostbackUsername</code></td>\n<td>HTTP basic auth username</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>PostbackPassword</code></td>\n<td>HTTP basic auth password</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><p>If <code>PostbackUri</code> is omitted, no webhooks are sent for that request.</p>\n<h2 id=\"delivery\">Delivery</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Method</td>\n<td><code>POST</code></td>\n</tr>\n<tr>\n<td>Body</td>\n<td>JSON object</td>\n</tr>\n<tr>\n<td>Auth</td>\n<td>HTTP Basic Auth (only when both <code>PostbackUsername</code> and <code>PostbackPassword</code> are provided)</td>\n</tr>\n</tbody>\n</table>\n</div><p>Webhooks fire only when <code>PostbackUri</code> is set on the request. Delivery is best-effort (synchronous at the time of the triggering action); there is no automatic retry queue exposed via the API. Prefer idempotent handlers and still poll <strong>Request status by ID</strong> as a fallback.</p>\n<h2 id=\"common-fields\">Common fields</h2>\n<p>Every payload includes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td><code>String</code></td>\n<td>Event type (see below)</td>\n</tr>\n<tr>\n<td><code>requestId</code></td>\n<td><code>String</code></td>\n<td>Landlord reference request ID (same as API <code>requestId</code>)</td>\n</tr>\n<tr>\n<td><code>time</code></td>\n<td><code>Integer</code></td>\n<td>Unix timestamp when the webhook was sent</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"event-types\">Event types</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><code>type</code></th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status_update</code></td>\n<td>Request status changes</td>\n</tr>\n<tr>\n<td><code>staff_note</code></td>\n<td>Staff adds a note or action log entry on the request</td>\n</tr>\n<tr>\n<td><code>landlord_validation_comment</code></td>\n<td>Staff adds a comment during landlord legitimacy validation</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"status_update\"><code>status_update</code></h3>\n<p>Sent whenever the request status changes (for example from <code>pending_landlord_response</code> to <code>landlord_legitimacy_check</code>, or to a completed/canceled/expired state).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>String</code></td>\n<td>New status machine name (same values as API <code>requestStatus</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"status_update\",\n  \"status\": \"completed_verified_landlord\",\n  \"requestId\": \"5460\",\n  \"time\": 1720886400\n}\n\n</code></pre>\n<p>Status values:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><code>status</code></th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>pending_landlord_response</code></td>\n<td>Waiting for the landlord to provide a landlord reference</td>\n</tr>\n<tr>\n<td><code>landlord_legitimacy_check</code></td>\n<td>Reference received; verifying the landlord/property manager</td>\n</tr>\n<tr>\n<td><code>completed_verified_landlord</code></td>\n<td>Report complete; landlord verified. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>completed_landlord_not_verified</code></td>\n<td>Report complete; landlord not verified. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>completed_invalid_landlord</code></td>\n<td>Report complete; reference not from a legitimate landlord. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>expired_no_landlord_response</code></td>\n<td>Expired with no landlord response</td>\n</tr>\n<tr>\n<td><code>declined</code></td>\n<td>Landlord declined to provide a reference</td>\n</tr>\n<tr>\n<td><code>canceled</code></td>\n<td>Canceled by the requester or an administrator</td>\n</tr>\n</tbody>\n</table>\n</div><p>On <code>status_update</code> for a completed status, fetch the full report via <strong>Get Reference Report</strong>.</p>\n<h3 id=\"staff_note\"><code>staff_note</code></h3>\n<p>Sent when staff records an action on the request (phone call, SMS, email, response, or other).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>notes</code></td>\n<td><code>Array</code></td>\n<td>One or more action objects from the new staff note</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each note object:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>title</code></td>\n<td><code>String</code></td>\n<td>Short description of the action (may include a phone number or similar)</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td><code>String[]</code></td>\n<td>Detail lines (outcome, notes, email ID, etc.)</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"staff_note\",\n  \"notes\": [\n    {\n      \"title\": \"Staff made a phone call to 6285553901\",\n      \"items\": [\n        \"Phone call outcome: Left voicemail\",\n        \"Phone call notes: Called property manager, no answer\"\n      ]\n    },\n    {\n      \"title\": \"Staff sent an email regarding this request\",\n      \"items\": [\n        \"Email ID: manager@example.com\",\n        \"Email notes: Followed up with lease documentation request\"\n      ]\n    }\n  ],\n  \"requestId\": \"5460\",\n  \"time\": 1720886400\n}\n\n</code></pre>\n<p>Possible <code>title</code> prefixes:</p>\n<ul>\n<li><p><code>Staff made a phone call to …</code></p>\n</li>\n<li><p><code>Staff made an SMS to …</code></p>\n</li>\n<li><p><code>Staff sent an email regarding this request</code></p>\n</li>\n<li><p><code>Staff responsed to a phone/sms regarding this request</code></p>\n</li>\n<li><p><code>Staff took other action regarding this request</code></p>\n</li>\n</ul>\n<p>A single webhook may include multiple note objects when several action types were logged in one staff note.</p>\n<h3 id=\"landlord_validation_comment\"><code>landlord_validation_comment</code></h3>\n<p>Sent when staff adds a comment on the landlord validation / legitimacy check for this request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>comment</code></td>\n<td><code>String</code></td>\n<td>Comment text</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"landlord_validation_comment\",\n  \"comment\": \"Deed search matches the listed property manager.\",\n  \"requestId\": \"5460\",\n  \"time\": 1720886400\n}\n\n</code></pre>\n<h2 id=\"handling-recommendations\">Handling recommendations</h2>\n<ol>\n<li><p>Respond quickly with <code>2xx</code>; do heavy work asynchronously.</p>\n</li>\n<li><p>Branch on <code>type</code>.</p>\n</li>\n<li><p>For <code>status_update</code>, treat <code>status</code> the same as <code>requestStatus</code> from the REST API.</p>\n</li>\n<li><p>Do not rely on webhooks alone — poll <strong>Request status by ID</strong> if a callback is missed.</p>\n</li>\n</ol>\n<h1 id=\"error-responses\">Error responses</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Typical cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Malformed request (invalid JSON body, bad upload headers)</td>\n</tr>\n<tr>\n<td><code>422</code></td>\n<td>Field validation errors (missing/invalid fields, Melissa checks)</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>API key does not own the request, or payment method not configured</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Request ID not found</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Unexpected server error</td>\n</tr>\n</tbody>\n</table>\n</div></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"About RenterFile","slug":"about-renterfile"},{"content":"About RenterFile API","slug":"about-renterfile-api"},{"content":"Authentication","slug":"authentication"},{"content":"Environments","slug":"environments"},{"content":"Typical workflow","slug":"typical-workflow"},{"content":"Request lifecycle","slug":"request-lifecycle"},{"content":"Webhooks (postbacks)","slug":"webhooks-postbacks"},{"content":"Error responses","slug":"error-responses"}],"owner":"18007900","collectionId":"047be8fd-2667-411b-9e0a-171160b189ce","publishedId":"2sBY4LRMyc","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-07-10T16:59:52.000Z"},"item":[{"name":"Consent File Upload","event":[{"listen":"test","script":{"id":"a58aa0d3-9558-48fd-b688-61a2c9b5ccaa","exec":["// Stores the file ID in an environment variable","var fileId = pm.response.json().fid;","pm.environment.set(\"FILE_ID\", fileId);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"5875257a-8c6c-437a-a0f8-8f6aea76ed72","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"api-key"},{"key":"value","value":"{{API_KEY}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Disposition","value":"file; filename=\"clothing.png\"","description":"<p>Content-Disposition\" header is required. A file name in the format \"filename=FILENAME\" must be provided. Make sure the extension here matches the actual file extension.</p>\n","type":"text"},{"key":"Content-Type","value":"application/octet-stream","description":"<p>The Content-Type header specifies the media type of the resource. For file uploads, it helps the server understand the type of file being uploaded. The application/octet-stream MIME type is used for binary data, indicating that the file content is in a generic binary format.</p>\n","type":"text"}],"body":{"mode":"file","file":{"src":"{{CONSENT_FILE_PATH}}"}},"url":"{{API_URL}}/api/v1/consent/file/upload?_format=json","description":"<p>Provide a signed consent file that states that this applicant consented to landlord reference check (applicant gives the landlord a permission to reach out to all current/past landlords, and applicant give permission to the current/past landlords to provide a landlord reference about them)</p>\n<p>Allowed file types: txt, png, pdf, jpeg, jpg</p>\n","urlObject":{"path":["api","v1","consent","file","upload"],"host":["{{API_URL}}"],"query":[{"description":{"content":"<p>Request format</p>\n","type":"text/plain"},"key":"_format","value":"json"}],"variable":[]}},"response":[{"id":"5a4e86b2-c89f-4a9e-9bbd-fac7b11c9394","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Disposition","value":"file; filename=\"test.jpg\"","description":"Provide a signed consent file that states that this applicant consented to landlord reference check (applicant gives the landlord a permission to reach out to all current/past landlords, and applicant give permission to the current/past landlords to provide a landlord reference about them)\n","type":"text"},{"key":"Content-Type","value":"application/octet-stream","type":"text"}],"body":{"mode":"file","file":{}},"url":{"raw":"{{API_URL}}/api/v1/consent/file/upload?_format=json","host":["{{API_URL}}"],"path":["api","v1","consent","file","upload"],"query":[{"key":"_format","value":"json"}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 03 Aug 2024 09:24:29 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"Connection","value":"Keep-Alive"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"fid\": \"3114\"\n}"},{"id":"0033db41-c77a-4643-a0ac-faa3461926d0","name":"Bad Request with Content-Disposition header","originalRequest":{"method":"POST","header":[{"key":"Content-Disposition","value":"file; filename=\"test.jpg\"","description":"Content-Disposition\" header is required. A file name in the format \"filename=FILENAME\" must be provided","type":"text","disabled":true},{"key":"Content-Type","value":"application/octet-stream","type":"text"}],"body":{"mode":"file","file":{}},"url":{"raw":"{{API_URL}}/api/v1/consent/file/upload?_format=json","host":["{{API_URL}}"],"path":["api","v1","consent","file","upload"],"query":[{"key":"_format","value":"json","description":"Request format"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 03 Aug 2024 09:31:19 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Connection","value":"close"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"\\\"Content-Disposition\\\" header is required. A file name in the format \\\"filename=FILENAME\\\" must be provided\"\n}"},{"id":"f7908fd5-880e-4052-8f6d-d68676d08aeb","name":"Invalid Content-Type header","originalRequest":{"method":"POST","header":[{"key":"Content-Disposition","value":"file; filename=\"test.jpg\"","description":"Content-Disposition\" header is required. A file name in the format \"filename=FILENAME\" must be provided","type":"text"},{"key":"Content-Type","value":"application/octet-stream","description":"The Content-Type header specifies the media type of the resource. For file uploads, it helps the server understand the type of file being uploaded. The application/octet-stream MIME type is used for binary data, indicating that the file content is in a generic binary format.","type":"text","disabled":true}],"body":{"mode":"file","file":{}},"url":{"raw":"{{API_URL}}/api/v1/consent/file/upload?_format=json","host":["{{API_URL}}"],"path":["api","v1","consent","file","upload"],"query":[{"key":"_format","value":"json","description":"Request format"}]}},"status":"Unsupported Media Type","code":415,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 03 Aug 2024 09:32:10 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"Connection","value":"Keep-Alive"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"No route found that matches \\\"Content-Type: image/png\\\"\"\n}"},{"id":"a210f37e-935b-4992-8c5f-eeee5bd10c79","name":"Not allowed file type","originalRequest":{"method":"POST","header":[{"key":"Content-Disposition","value":"file; filename=\"test.docx\"","description":"Content-Disposition\" header is required. A file name in the format \"filename=FILENAME\" must be provided. Make sure the extension here matches the actual file extension.","type":"text"},{"key":"Content-Type","value":"application/octet-stream","description":"The Content-Type header specifies the media type of the resource. For file uploads, it helps the server understand the type of file being uploaded. The application/octet-stream MIME type is used for binary data, indicating that the file content is in a generic binary format.","type":"text"}],"body":{"mode":"file","file":{}},"url":{"raw":"{{API_URL}}/api/v1/consent/file/upload?_format=json","host":["{{API_URL}}"],"path":["api","v1","consent","file","upload"],"query":[{"key":"_format","value":"json","description":"Request format"}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 03 Aug 2024 10:20:01 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"Connection","value":"Keep-Alive"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Unprocessable Entity: file validation failed.\\nOnly files with the following extensions are allowed: txt png pdf jpeg jpg.\"\n}"}],"_postman_id":"5875257a-8c6c-437a-a0f8-8f6aea76ed72"},{"name":"Request a new landlord reference","event":[{"listen":"test","script":{"id":"782d0047-c1da-4e82-b63a-70c3ea2dc93a","exec":["var requestId = pm.response.json().requestId;","pm.environment.set(\"REQUEST_ID\", requestId);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"45affca6-a826-49e2-84f4-9322f6e25ff1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"api-key"},{"key":"value","value":"{{API_KEY}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"residents\": [\n    {\n      \"ResidentFirstName\": \"Ava\",\n      \"ResidentMiddleName\": \"\",\n      \"ResidentLastName\": \"Thompson\",\n      \"ResidentDateOfBirth\": \"1993-02-11\",\n      \"ResidentPhoneNumber\": \"4155552109\",\n      \"ResidentSsnLastFour\": \"3412\",\n      \"ResidentEmail\": \"akshitggrwl+resident1@gmail.com\",\n      \"ResidentSignedConsentFid\": {{FILE_ID}}\n    }\n  ],\n  \"PropertyAddress\": {\n    \"country_code\": \"US\",\n    \"address_line1\": \"525 Market Street\",\n    \"address_line2\": \"Apt 14D\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"zip\": \"94105\"\n  },\n\n  \"LandlordFirstName\": \"Rachel\",\n  \"LandlordLastName\": \"Nguyen\",\n  \"LandlordEmail\": \"akshitggrwl+landlord3@gmail.com\",\n  \"LandlordCompanyName\": \"Bayview Property Management\",\n  \"LandlordPhoneNumber\": \"6285553901\",\n  \"LandlordExtensionNumber\": \"105\",\n\n  \"Requester\": {\n    \"RequesterFirstName\": \"Lucas\",\n    \"RequesterLastName\": \"Perez\",\n    \"RequesterEmail\": \"akshitggrwl+requester3@gmail.com\",\n    \"RequesterCompanyName\": \"UrbanNest Apartments\",\n    \"RequesterPhoneNumber\": \"4155559982\",\n    \"RequesterExtensionNumber\": \"105\",\n    \"RequesterCompanyLogoUrl\": \"https://example.com/logos/urbannest.png\"\n  },\n\n  \"PostbackUri\": \"https://webhook.site/ab42e39a-8b92-4b51-9d3a-2d8b91e4c777\",\n  \"PostbackUsername\": \"\",\n  \"PostbackPassword\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"{{API_URL}}/api/v1/request-landlord-reference?_format=json","description":"<p>Submit a new landlord reference verification request.</p>\n<p>Before calling this endpoint:</p>\n<ol>\n<li><p>Upload a consent file via <strong>Consent File Upload</strong> and note the returned <code>fid</code>.</p>\n</li>\n<li><p>Ensure your RenterFile account has a valid payment method on file (required for production accounts).</p>\n</li>\n</ol>\n<p>On success, save the returned <code>requestId</code> as <code>REQUEST_ID</code> for subsequent calls.</p>\n<h2 id=\"success-response-201\">Success response (<code>201</code>)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\"\n}\n\n</code></pre>\n<hr />\n<h3 id=\"residents-fields\">Resident(s) fields</h3>\n<p>You can include one or more residents. Add each resident as an object in the <code>residents</code> array.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ResidentFirstName</code></td>\n<td>Resident first name</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentMiddleName</code></td>\n<td>Resident middle name</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentLastName</code></td>\n<td>Resident last name</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentEmail</code></td>\n<td>Resident email (used for notifications if landlord is unreachable)</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentDateOfBirth</code></td>\n<td>Date of birth (<code>YYYY-MM-DD</code>)</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentPhoneNumber</code></td>\n<td>10-digit US phone number</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentSsnLastFour</code></td>\n<td>Last four digits of SSN</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentSignedConsentFid</code></td>\n<td>File ID from <strong>Consent File Upload</strong></td>\n<td>Yes</td>\n<td>Integer</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"property-address-fields\">Property address fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>country_code</code></td>\n<td>Country code (e.g. <code>US</code>)</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>address_line1</code></td>\n<td>Street address</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>address_line2</code></td>\n<td>Unit/suite number</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>City</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>State (2-letter code)</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>zip</code></td>\n<td>ZIP code</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"landlord-fields\">Landlord fields</h3>\n<p>Contact information for the landlord being asked to provide a reference.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>LandlordFirstName</code></td>\n<td>Landlord first name</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordLastName</code></td>\n<td>Landlord last name</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordCompanyName</code></td>\n<td>Landlord company name</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordEmail</code></td>\n<td>Landlord email (validated for deliverability)</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordPhoneNumber</code></td>\n<td>10-digit US phone number (validated for reachability via Melissa)</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordPhoneNumberConfirmed</code></td>\n<td>Set to <code>true</code> to skip Melissa reachability check when you have verified the number is correct (false-positive override)</td>\n<td>No</td>\n<td>Boolean</td>\n</tr>\n<tr>\n<td><code>LandlordExtensionNumber</code></td>\n<td>Phone extension (e.g. <code>105</code> for a department)</td>\n<td>No</td>\n<td>String</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"melissa-phone-reachability\">Melissa phone reachability</h4>\n<p><code>LandlordPhoneNumber</code> is checked against Melissa Global Phone. If the number is not reachable, the API returns <strong>HTTP <code>422</code></strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Validation failed.\",\n  \"errors\": {\n    \"LandlordPhoneNumber\": \"is not reachable, please provide a correct phone number and re-submit this request. If you verified the number is correct, set LandlordPhoneNumberConfirmed to true and re-submit.\"\n  }\n}\n</code></pre>\n<p>Re-submit with <code>\"LandlordPhoneNumberConfirmed\": true</code> to bypass the check (same as the “This phone number is correct” option on the RenterFile website). Checks are skipped when <code>Settings::local</code> is enabled on the server.</p>\n<h3 id=\"requester-fields-optional\">Requester fields (optional)</h3>\n<p>The <code>requestor</code> information defaults to the authenticated requestor user's details. If you need to use different values, specify them in the <code>requestor</code> object to override the defaults.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>RequesterFirstName</code></td>\n<td>Requester first name</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>RequesterLastName</code></td>\n<td>Requester last name</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>RequesterEmail</code></td>\n<td>Requester email</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>RequesterCompanyName</code></td>\n<td>Requester company name</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>RequesterPhoneNumber</code></td>\n<td>Requester phone number</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>RequesterExtensionNumber</code></td>\n<td>Phone extension (e.g. <code>105</code> for a department)</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>RequesterCompanyLogoUrl</code></td>\n<td>URL to company logo displayed in communications</td>\n<td>No</td>\n<td>String</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"webhook-fields-optional\">Webhook fields (optional)</h3>\n<p>If provided, RenterFile sends status updates to your endpoint whenever the request changes.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PostbackUri</code></td>\n<td>Webhook URL to receive updates</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>PostbackUsername</code></td>\n<td>HTTP basic auth username for your webhook</td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>PostbackPassword</code></td>\n<td>HTTP basic auth password for your webhook</td>\n<td>No</td>\n<td>String</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"common-errors\">Common errors</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Message</th>\n<th>Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td><code>No data received.</code></td>\n<td>Empty request body</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>Missing required fields: ...</code></td>\n<td>Required field missing</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Payment method message</td>\n<td>No payment method on file</td>\n</tr>\n<tr>\n<td><code>201</code></td>\n<td>—</td>\n<td>Success</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","request-landlord-reference"],"host":["{{API_URL}}"],"query":[{"key":"_format","value":"json"}],"variable":[]}},"response":[{"id":"251bc943-9e7c-4bc2-a5f6-e21e9c94e43b","name":"No Data Provided","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"{{API_URL}}/api/v1/request-landlord-reference?_format=json","host":["{{API_URL}}"],"path":["api","v1","request-landlord-reference"],"query":[{"key":"_format","value":"json"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 04 Aug 2024 10:39:36 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Connection","value":"close"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Validation failed.\",\n  \"errors\": {\n    \"_request\": \"No data received.\"\n  }\n}"},{"id":"45bc7005-a95c-48ca-911a-daeff2307943","name":"Incomplete Data Provided","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n\t\"residents\":\n        [\n            {\n                // \"ResidentFirstName\": \"Akshit\",\n                \"ResidentMiddleName\": \"\",\n                \"ResidentLastName\": \"Renter\",\n                \"ResidentDateOfBirth\": \"2000-01-01\",\n                \"ResidentPhoneNumber\": \"9412366999\",\n                \"ResidentSsnLastFour\": \"0000\",\n                \"ResidentEmail\": \"akshitggrwl+renter@gmail.com\",\n                \"ResidentSignedConsentFid\": {{FILE_ID}}\n            }\n        ],\n\t\"PropertyAddress\": {\n\t\t\"country_code\": \"US\",\n\t\t\"address_line1\": \"1534 32nd Ave\",\n\t\t\"address_line2\": \"\",\n\t\t\"city\": \"Sacramento\",\n\t\t\"state\": \"CA\",\n\t\t\"zip\": \"94203\"\n\t},\n\t\"LandlordFirstName\": \"Akshit\",\n\t\"LandlordLastName\": \"Landlord\",\n\t\"LandlordEmail\": \"akshitggrwl+landlord@gmail.com\",\n\t\"LandlordCompanyName\": \"\",\n    \"LandlordPhoneNumber\": \"9162450393\",\n  \"LandlordExtensionNumber\": \"105\",\n\t\n\t\"PostbackUri\": \"{{webhookURL}}\",\n\t\"PostbackUsername\": \"\",\n\t\"PostbackPassword\": \"\"\n}\n","options":{"raw":{"language":"json"}}},"url":{"raw":"{{API_URL}}/api/v1/request-landlord-reference?_format=json","host":["{{API_URL}}"],"path":["api","v1","request-landlord-reference"],"query":[{"key":"_format","value":"json"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 04 Aug 2024 11:22:12 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Connection","value":"close"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Validation failed.\",\n  \"errors\": {\n    \"LandlordCompanyName\": \"is required\",\n    \"residents[0].ResidentFirstName\": \"is required\"\n  }\n}"},{"id":"00e0c464-32d3-4374-9827-3954206abeb7","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n\t\"residents\":\n        [\n            {\n                \"ResidentFirstName\": \"Akshit\",\n                \"ResidentMiddleName\": \"\",\n                \"ResidentLastName\": \"Renter\",\n                \"ResidentDateOfBirth\": \"2000-01-01\",\n                \"ResidentPhoneNumber\": \"9412366999\",\n                \"ResidentSsnLastFour\": \"0000\",\n                \"ResidentEmail\": \"akshitggrwl+renter@gmail.com\",\n                \"ResidentSignedConsentFid\": {{FILE_ID}}\n            }\n        ],\n\t\"PropertyAddress\": {\n\t\t\"country_code\": \"US\",\n\t\t\"address_line1\": \"1534 32nd Ave\",\n\t\t\"address_line2\": \"\",\n\t\t\"city\": \"Sacramento\",\n\t\t\"state\": \"CA\",\n\t\t\"zip\": \"94203\"\n\t},\n\t\"LandlordFirstName\": \"Akshit\",\n\t\"LandlordLastName\": \"Landlord\",\n\t\"LandlordEmail\": \"akshitggrwl+landlord@gmail.com\",\n\t\"LandlordCompanyName\": \"Test Company\",\n    \"LandlordPhoneNumber\": \"9162450393\",\n  \"LandlordExtensionNumber\": \"105\",\n\t\n\t\"PostbackUri\": \"\",\n\t\"PostbackUsername\": \"\",\n\t\"PostbackPassword\": \"\"\n}\n","options":{"raw":{"language":"json"}}},"url":{"raw":"{{API_URL}}/api/v1/request-landlord-reference?_format=json","host":["{{API_URL}}"],"path":["api","v1","request-landlord-reference"],"query":[{"key":"_format","value":"json"}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 06 Aug 2024 13:22:13 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Location","value":"http://renterfile.local/node/5460"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"Connection","value":"Keep-Alive"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestId\": \"5460\",\n    \"requestStatus\": \"pending_landlord_response\"\n}"}],"_postman_id":"45affca6-a826-49e2-84f4-9322f6e25ff1"},{"name":"Request status by ID","id":"44d612d6-2674-486e-aff3-ccca2b20c7e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"api-key"},{"key":"value","value":"{{API_KEY}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{API_URL}}/api/v1/request-status?_format=json&id={{REQUEST_ID}}","description":"<p>Retrieve the current status of a landlord reference request.</p>\n<p>Poll this endpoint after creating a request, or when you receive a webhook notification, to determine whether the report is ready.</p>\n<h2 id=\"query-parameters\">Query parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Request ID returned from <strong>Request Landlord Reference</strong></td>\n<td>Yes</td>\n<td>Integer</td>\n</tr>\n<tr>\n<td><code>_format</code></td>\n<td>Response format</td>\n<td>Yes</td>\n<td>String (<code>json</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"success-response-200\">Success response (<code>200</code>)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\"\n}\n</code></pre>\n<h2 id=\"request-statuses\">Request statuses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><code>requestStatus</code></th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>pending_landlord_response</code></td>\n<td>Waiting for the landlord to provide a landlord reference. Can be <strong>modified</strong> via <strong>Modify Request</strong>.</td>\n</tr>\n<tr>\n<td><code>landlord_legitimacy_check</code></td>\n<td>We've received the landlord reference and are confirming that it came from the property's legitimate landlord or property manager before completing the report.</td>\n</tr>\n<tr>\n<td><code>completed_verified_landlord</code></td>\n<td>The landlord reference report is complete, and the landlord was successfully verified as a legitimate owner or property manager. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>completed_landlord_not_verified</code></td>\n<td>The landlord reference report is complete, but we were unable to verify that the reference came from the property's legitimate landlord or property manager. Review the report before relying on the reference. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>completed_invalid_landlord</code></td>\n<td>The landlord reference report is complete. The reference did not come from the property's legitimate landlord or property manager. Review the report for details. Call <strong>Get Reference Report</strong>.</td>\n</tr>\n<tr>\n<td><code>expired_no_landlord_response</code></td>\n<td>The request expired because the landlord did not respond before the expiration period set by the requester.</td>\n</tr>\n<tr>\n<td><code>declined</code></td>\n<td>The landlord declined to provide a landlord reference.</td>\n</tr>\n<tr>\n<td><code>canceled</code></td>\n<td>The request was canceled via <strong>Cancel Request</strong> or by an administrator.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"common-errors\">Common errors</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Message</th>\n<th>Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td><code>Missing required parameters</code></td>\n<td>No query parameters provided</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>Request id is required!</code></td>\n<td><code>id</code> parameter missing</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td><code>Access Denied!</code></td>\n<td>API key does not own this request</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td><code>No request found!</code></td>\n<td>Invalid request ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","request-status"],"host":["{{API_URL}}"],"query":[{"description":{"content":"<p>Request format</p>\n","type":"text/plain"},"key":"_format","value":"json"},{"description":{"content":"<p>ID of the request to get the status for. It is an integer type</p>\n","type":"text/plain"},"key":"id","value":"{{REQUEST_ID}}"}],"variable":[]}},"response":[{"id":"c2ed412a-e07f-4eeb-9c71-2e2044866d1d","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{API_URL}}/api/v1/request-status?_format=json&id=5456","host":["{{API_URL}}"],"path":["api","v1","request-status"],"query":[{"key":"_format","value":"json","description":"Request format"},{"key":"id","value":"5456","description":"ID of the request to get the status for. It is an integer type"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 03 Aug 2024 09:21:38 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-Drupal-Dynamic-Cache","value":"MISS"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-Drupal-Cache-Tags","value":"config:rest.resource.request_status_by_id http_response"},{"key":"X-Drupal-Cache-Contexts","value":"user.permissions"},{"key":"X-Drupal-Cache-Max-Age","value":"-1 (Permanent)"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"Connection","value":"Keep-Alive"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestId\": \"5456\",\n    \"requestStatus\": \"completed_verified_landlord\"\n}"},{"id":"e1e5dc36-0551-4fa4-98af-e758e21190ef","name":"Request Not Found","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{API_URL}}/api/v1/request-status?_format=json&id=5457","host":["{{API_URL}}"],"path":["api","v1","request-status"],"query":[{"key":"_format","value":"json","description":"Request format"},{"key":"id","value":"5457","description":"ID of the request to get the status for. It is an integer type"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 03 Aug 2024 09:22:26 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"Connection","value":"Keep-Alive"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"No request found!\"\n}"},{"id":"a7c381f2-b770-4aeb-b3cc-cfbb59165d2e","name":"Bad Request","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{API_URL}}/api/v1/request-status?_format=json","host":["{{API_URL}}"],"path":["api","v1","request-status"],"query":[{"key":"_format","value":"json","description":"Request format"},{"key":"id","value":"5457","description":"ID of the request to get the status for. It is an integer type","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 03 Aug 2024 09:22:55 GMT"},{"key":"Server","value":"Apache/2.4.59 (Unix) PHP/8.2.20"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Powered-By","value":"PHP/8.2.20"},{"key":"Cache-Control","value":"must-revalidate, no-cache, private"},{"key":"X-UA-Compatible","value":"IE=edge"},{"key":"Content-language","value":"en"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Expires","value":"Sun, 19 Nov 1978 05:00:00 GMT"},{"key":"X-Generator","value":"Drupal 9 (https://www.drupal.org)"},{"key":"Connection","value":"close"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Request id is required!\"\n}"}],"_postman_id":"44d612d6-2674-486e-aff3-ccca2b20c7e1"},{"name":"Request Progress Report","id":"d9bc1631-b00f-4334-a41f-5da6e2cdc353","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"api-key"},{"key":"value","value":"{{API_KEY}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{API_URL}}/api/v1/request-progress-report?_format=json&id={{REQUEST_ID}}","description":"<p>Retrieve a chronological activity log for a landlord reference request.</p>\n<p>Use this endpoint to show your users what RenterFile has done on their behalf — for example, when the landlord was contacted, reminders sent, or the request was canceled.</p>\n<p>The response also includes a <code>request</code> object with the <strong>current</strong> request details (property address, landlord contacts, residents, requester). This reflects the latest data on file, including changes made by RenterFile staff or via <strong>Modify Request</strong>.</p>\n<h2 id=\"query-parameters\">Query parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Request ID returned from <strong>Request Landlord Reference</strong></td>\n<td>Yes</td>\n<td>Integer</td>\n</tr>\n<tr>\n<td><code>_format</code></td>\n<td>Response format</td>\n<td>Yes</td>\n<td>String (<code>json</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"success-response-200\">Success response (<code>200</code>)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\",\n  \"request\": {\n    \"PropertyAddress\": {\n      \"country_code\": \"US\",\n      \"address_line1\": \"525 Market Street\",\n      \"city\": \"San Francisco\",\n      \"state\": \"CA\",\n      \"zip\": \"94105\"\n    },\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ],\n    \"Requester\": {\n      \"RequesterFirstName\": \"Lucas\",\n      \"RequesterLastName\": \"Perez\",\n      \"RequesterEmail\": \"requester@example.com\"\n    }\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    },\n    {\n      \"time\": 1722953100,\n      \"comment\": \"Landlord contacted via email\"\n    }\n  ]\n}\n</code></pre>\n<p>Each <code>progress</code> entry contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>time</code></td>\n<td>Unix timestamp (seconds since epoch) when the activity occurred</td>\n</tr>\n<tr>\n<td><code>comment</code></td>\n<td>Human-readable description of what happened</td>\n</tr>\n</tbody>\n</table>\n</div><p>Format <code>time</code> on the client for display (e.g. <code>2024-08-06 13:22:13</code> in your local timezone).</p>\n<h2 id=\"common-errors\">Common errors</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>422</code></td>\n<td><code>id</code> query parameter missing (<code>errors.id</code>)</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>API key does not own this request</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Invalid request ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","request-progress-report"],"host":["{{API_URL}}"],"query":[{"description":{"content":"<p>Response format</p>\n","type":"text/plain"},"key":"_format","value":"json"},{"description":{"content":"<p>Request ID returned from Request Landlord Reference</p>\n","type":"text/plain"},"key":"id","value":"{{REQUEST_ID}}"}],"variable":[]}},"response":[{"id":"b1feafdd-1c94-4b62-869c-4b978c8d5020","name":"Success","originalRequest":{"auth":{"type":"apikey","apikey":{"value":"{{API_KEY}}","key":"api-key"}},"method":"GET","header":[],"url":{"raw":"{{API_URL}}/api/v1/request-progress-report?_format=json&id={{REQUEST_ID}}","host":["{{API_URL}}"],"path":["api","v1","request-progress-report"],"query":[{"description":"Response format","key":"_format","value":"json"},{"description":"Request ID returned from Request Landlord Reference","key":"id","value":"{{REQUEST_ID}}"}]},"description":"Retrieve a chronological activity log for a landlord reference request.\n\nUse this endpoint to show your users what RenterFile has done on their behalf — for example, when the landlord was contacted, reminders sent, or the request was canceled.\n\nThe response also includes a `request` object with the **current** request details (property address, landlord contacts, residents, requester). This reflects the latest data on file, including changes made by RenterFile staff or via **Modify Request**.\n\n## Query parameters\n\n| Parameter | Description | Required | Type |\n| --- | --- | --- | --- |\n| `id` | Request ID returned from **Request Landlord Reference** | Yes | Integer |\n| `_format` | Response format | Yes | String (`json`) |\n\n## Success response (`200`)\n\n```json\n{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\",\n  \"request\": {\n    \"PropertyAddress\": {\n      \"country_code\": \"US\",\n      \"address_line1\": \"525 Market Street\",\n      \"city\": \"San Francisco\",\n      \"state\": \"CA\",\n      \"zip\": \"94105\"\n    },\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ],\n    \"Requester\": {\n      \"RequesterFirstName\": \"Lucas\",\n      \"RequesterLastName\": \"Perez\",\n      \"RequesterEmail\": \"requester@example.com\"\n    }\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    },\n    {\n      \"time\": 1722953100,\n      \"comment\": \"Landlord contacted via email\"\n    }\n  ]\n}\n```\n\nEach `progress` entry contains:\n\n| Field | Description |\n| --- | --- |\n| `time` | Unix timestamp (seconds since epoch) when the activity occurred |\n| `comment` | Human-readable description of what happened |\n\nFormat `time` on the client for display (e.g. `2024-08-06 13:22:13` in your local timezone).\n\n## Common errors\n\n| HTTP status | Cause |\n| --- | --- |\n| `422` | `id` query parameter missing (`errors.id`) |\n| `403` | API key does not own this request |\n| `404` | Invalid request ID |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\",\n  \"request\": {\n    \"PropertyAddress\": {\n      \"country_code\": \"US\",\n      \"address_line1\": \"525 Market Street\",\n      \"city\": \"San Francisco\",\n      \"state\": \"CA\",\n      \"zip\": \"94105\"\n    },\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ],\n    \"Requester\": {\n      \"RequesterFirstName\": \"Lucas\",\n      \"RequesterLastName\": \"Perez\",\n      \"RequesterEmail\": \"requester@example.com\"\n    }\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    },\n    {\n      \"time\": 1722953100,\n      \"comment\": \"Landlord contacted via email\"\n    }\n  ]\n}"}],"_postman_id":"d9bc1631-b00f-4334-a41f-5da6e2cdc353"},{"name":"Get Reference Report","id":"442dc1f1-7723-4a56-aeb9-3ca8137544c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"api-key"},{"key":"value","value":"{{API_KEY}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{API_URL}}/api/v1/get-landlord-reference-report?_format=json&id={{REQUEST_ID}}","description":"<p>Retrieve the landlord reference report for a request.</p>\n<p>Poll this endpoint after <strong>Request Status</strong> indicates the report may be ready. The response always includes <code>requestId</code>, <code>requestStatus</code>, <code>request</code>, and <code>progress</code>.</p>\n<p>The <code>request</code> object contains the <strong>current</strong> request details (property address, landlord contacts, residents, requester). Use it to see the latest data on file, including changes made by RenterFile staff or via <strong>Modify Request</strong>, without waiting for a completed reference response.</p>\n<p><strong>Full report details</strong> (<code>residents</code>, <code>reference</code>, <code>referenceProvider</code>, <code>requester</code>) are included only when <code>requestStatus</code> is one of:</p>\n<ul>\n<li><code>completed_verified_landlord</code></li>\n<li><code>completed_landlord_not_verified</code></li>\n<li><code>completed_invalid_landlord</code></li>\n</ul>\n<p>Note: the top-level <code>residents</code> and <code>requester</code> fields on completed reports are the landlord-response report format. The <code>request</code> object always uses the same field names as <strong>Request Landlord Reference</strong> / <strong>Modify Request</strong>.</p>\n<h2 id=\"query-parameters\">Query parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Request ID returned from <strong>Request Landlord Reference</strong></td>\n<td>Yes</td>\n<td>Integer</td>\n</tr>\n<tr>\n<td><code>_format</code></td>\n<td>Response format</td>\n<td>Yes</td>\n<td>String (<code>json</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response-when-report-is-not-yet-complete\">Response when report is not yet complete</h2>\n<p>When status is not a completed variant, the response contains status, current request details, and progress:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\",\n  \"request\": {\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ]\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    }\n  ]\n}\n</code></pre>\n<h2 id=\"response-when-report-is-complete\">Response when report is complete</h2>\n<p>When status is a completed variant, the response includes the full report:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Top-level field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>requestId</code></td>\n<td>Request ID</td>\n</tr>\n<tr>\n<td><code>requestStatus</code></td>\n<td>Current status (a <code>completed_*</code> variant)</td>\n</tr>\n<tr>\n<td><code>request</code></td>\n<td>Current request snapshot (same field names as <strong>Request Landlord Reference</strong> / <strong>Modify Request</strong>)</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>Activity log (same format as <strong>Request Progress Report</strong>; <code>time</code> is a Unix timestamp)</td>\n</tr>\n<tr>\n<td><code>residents</code></td>\n<td>Array of resident details from the landlord response (<code>Name</code>, <code>Email</code>, <code>DateOfBirth</code>, <code>SSLastFour</code>)</td>\n</tr>\n<tr>\n<td><code>reference</code></td>\n<td>Landlord's answers (rent amount, move-in/out dates, late payments, eviction, animals, etc.)</td>\n</tr>\n<tr>\n<td><code>referenceProvider</code></td>\n<td>Landlord who provided the reference (<code>Name</code>, <code>Email</code>, <code>CompanyName</code>, <code>Phone</code>, <code>verificationStatus</code>, <code>validationNotes</code>)</td>\n</tr>\n<tr>\n<td><code>requester</code></td>\n<td>Person/company who submitted the request (report format)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"completed-status-variants\">Completed status variants</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><code>requestStatus</code></th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>completed_verified_landlord</code></td>\n<td>Landlord verified as legitimate owner or property manager</td>\n</tr>\n<tr>\n<td><code>completed_landlord_not_verified</code></td>\n<td>Report complete; landlord legitimacy could not be verified — review before relying on the reference</td>\n</tr>\n<tr>\n<td><code>completed_invalid_landlord</code></td>\n<td>Reference did not come from the legitimate landlord or property manager</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"key-reference-fields\">Key <code>reference</code> fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>TenancyAddress</code></td>\n<td>Rental property address</td>\n</tr>\n<tr>\n<td><code>ReferenceStatus</code></td>\n<td><code>current</code> or <code>past</code> tenancy</td>\n</tr>\n<tr>\n<td><code>MoveInDate</code> / <code>MoveOutDate</code></td>\n<td>Tenancy dates (<code>YYYY-MM-DD</code>)</td>\n</tr>\n<tr>\n<td><code>RentAmount</code></td>\n<td>Monthly rent (formatted, e.g. <code>$2,500</code>)</td>\n</tr>\n<tr>\n<td><code>LatePayments</code></td>\n<td>Whether resident made late payments (<code>Yes</code>/<code>No</code>)</td>\n</tr>\n<tr>\n<td><code>Eviction</code></td>\n<td>Whether an eviction was filed (<code>Yes</code>/<code>No</code>)</td>\n</tr>\n<tr>\n<td><code>AnimalsAuthorized</code> / <code>AnimalsUnauthorized</code></td>\n<td><code>true</code>/<code>false</code> when animals were reported; <code>null</code> when resident had no animals</td>\n</tr>\n<tr>\n<td><code>OwnsBalance</code></td>\n<td><code>1</code>/<code>0</code> — resident currently owes money (current residents) or left owing funds (previous residents)</td>\n</tr>\n<tr>\n<td><code>LeftOwningBalance</code></td>\n<td>Amount owed, formatted like <code>$5,000</code>, or <code>0</code> when none</td>\n</tr>\n<tr>\n<td><code>LandlordComment</code></td>\n<td>Free-text comment from the landlord</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"common-errors\">Common errors</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>422</code></td>\n<td><code>id</code> query parameter missing (<code>errors.id</code>)</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>API key does not own this request</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Invalid request ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","get-landlord-reference-report"],"host":["{{API_URL}}"],"query":[{"description":{"content":"<p>Response format</p>\n","type":"text/plain"},"key":"_format","value":"json"},{"description":{"content":"<p>Request ID returned from Request Landlord Reference</p>\n","type":"text/plain"},"key":"id","value":"{{REQUEST_ID}}"}],"variable":[]}},"response":[{"id":"2c11ec29-ccb7-4da6-89a7-e12c5f5281d9","name":"In Progress","originalRequest":{"auth":{"type":"apikey","apikey":{"value":"{{API_KEY}}","key":"api-key"}},"method":"GET","header":[],"url":{"raw":"{{API_URL}}/api/v1/get-landlord-reference-report?_format=json&id={{REQUEST_ID}}","host":["{{API_URL}}"],"path":["api","v1","get-landlord-reference-report"],"query":[{"description":"Response format","value":"json","key":"_format"},{"description":"Request ID returned from Request Landlord Reference","value":"{{REQUEST_ID}}","key":"id"}]},"description":"Retrieve the landlord reference report for a request.\n\nPoll this endpoint after **Request Status** indicates the report may be ready. The response always includes `requestId`, `requestStatus`, `request`, and `progress`.\n\nThe `request` object contains the **current** request details (property address, landlord contacts, residents, requester). Use it to see the latest data on file, including changes made by RenterFile staff or via **Modify Request**, without waiting for a completed reference response.\n\n**Full report details** (`residents`, `reference`, `referenceProvider`, `requester`) are included only when `requestStatus` is one of:\n\n- `completed_verified_landlord`\n- `completed_landlord_not_verified`\n- `completed_invalid_landlord`\n\nNote: the top-level `residents` and `requester` fields on completed reports are the landlord-response report format. The `request` object always uses the same field names as **Request Landlord Reference** / **Modify Request**.\n\n## Query parameters\n\n| Parameter | Description | Required | Type |\n| --- | --- | --- | --- |\n| `id` | Request ID returned from **Request Landlord Reference** | Yes | Integer |\n| `_format` | Response format | Yes | String (`json`) |\n\n## Response when report is not yet complete\n\nWhen status is not a completed variant, the response contains status, current request details, and progress:\n\n```json\n{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\",\n  \"request\": {\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ]\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    }\n  ]\n}\n```\n\n## Response when report is complete\n\nWhen status is a completed variant, the response includes the full report:\n\n| Top-level field | Description |\n| --- | --- |\n| `requestId` | Request ID |\n| `requestStatus` | Current status (a `completed_*` variant) |\n| `request` | Current request snapshot (same field names as **Request Landlord Reference** / **Modify Request**) |\n| `progress` | Activity log (same format as **Request Progress Report**; `time` is a Unix timestamp) |\n| `residents` | Array of resident details from the landlord response (`Name`, `Email`, `DateOfBirth`, `SSLastFour`) |\n| `reference` | Landlord's answers (rent amount, move-in/out dates, late payments, eviction, animals, etc.) |\n| `referenceProvider` | Landlord who provided the reference (`Name`, `Email`, `CompanyName`, `Phone`, `verificationStatus`, `validationNotes`) |\n| `requester` | Person/company who submitted the request (report format) |\n\n### Completed status variants\n\n| `requestStatus` | Meaning |\n| --- | --- |\n| `completed_verified_landlord` | Landlord verified as legitimate owner or property manager |\n| `completed_landlord_not_verified` | Report complete; landlord legitimacy could not be verified — review before relying on the reference |\n| `completed_invalid_landlord` | Reference did not come from the legitimate landlord or property manager |\n\n### Key `reference` fields\n\n| Field | Description |\n| --- | --- |\n| `TenancyAddress` | Rental property address |\n| `ReferenceStatus` | `current` or `past` tenancy |\n| `MoveInDate` / `MoveOutDate` | Tenancy dates (`YYYY-MM-DD`) |\n| `RentAmount` | Monthly rent (formatted, e.g. `$2,500`) |\n| `LatePayments` | Whether resident made late payments (`Yes`/`No`) |\n| `Eviction` | Whether an eviction was filed (`Yes`/`No`) |\n| `AnimalsAuthorized` / `AnimalsUnauthorized` | `true`/`false` when animals were reported; `null` when resident had no animals |\n| `OwnsBalance` | `1`/`0` — resident currently owes money (current residents) or left owing funds (previous residents) |\n| `LeftOwningBalance` | Amount owed, formatted like `$5,000`, or `0` when none |\n| `LandlordComment` | Free-text comment from the landlord |\n\n## Common errors\n\n| HTTP status | Cause |\n| --- | --- |\n| `422` | `id` query parameter missing (`errors.id`) |\n| `403` | API key does not own this request |\n| `404` | Invalid request ID |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"landlord_legitimacy_check\",\n  \"request\": {\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ]\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    },\n    {\n      \"time\": 1723022100,\n      \"comment\": \"Landlord provided reference\"\n    }\n  ]\n}"},{"id":"63d1c86d-1036-48fc-a79a-a1060ee77d2a","name":"Completed Report","originalRequest":{"auth":{"type":"apikey","apikey":{"value":"{{API_KEY}}","key":"api-key"}},"method":"GET","header":[],"url":{"raw":"{{API_URL}}/api/v1/get-landlord-reference-report?_format=json&id={{REQUEST_ID}}","host":["{{API_URL}}"],"path":["api","v1","get-landlord-reference-report"],"query":[{"description":"Response format","value":"json","key":"_format"},{"description":"Request ID returned from Request Landlord Reference","value":"{{REQUEST_ID}}","key":"id"}]},"description":"Retrieve the landlord reference report for a request.\n\nPoll this endpoint after **Request Status** indicates the report may be ready. The response always includes `requestId`, `requestStatus`, `request`, and `progress`.\n\nThe `request` object contains the **current** request details (property address, landlord contacts, residents, requester). Use it to see the latest data on file, including changes made by RenterFile staff or via **Modify Request**, without waiting for a completed reference response.\n\n**Full report details** (`residents`, `reference`, `referenceProvider`, `requester`) are included only when `requestStatus` is one of:\n\n- `completed_verified_landlord`\n- `completed_landlord_not_verified`\n- `completed_invalid_landlord`\n\nNote: the top-level `residents` and `requester` fields on completed reports are the landlord-response report format. The `request` object always uses the same field names as **Request Landlord Reference** / **Modify Request**.\n\n## Query parameters\n\n| Parameter | Description | Required | Type |\n| --- | --- | --- | --- |\n| `id` | Request ID returned from **Request Landlord Reference** | Yes | Integer |\n| `_format` | Response format | Yes | String (`json`) |\n\n## Response when report is not yet complete\n\nWhen status is not a completed variant, the response contains status, current request details, and progress:\n\n```json\n{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"pending_landlord_response\",\n  \"request\": {\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ]\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    }\n  ]\n}\n```\n\n## Response when report is complete\n\nWhen status is a completed variant, the response includes the full report:\n\n| Top-level field | Description |\n| --- | --- |\n| `requestId` | Request ID |\n| `requestStatus` | Current status (a `completed_*` variant) |\n| `request` | Current request snapshot (same field names as **Request Landlord Reference** / **Modify Request**) |\n| `progress` | Activity log (same format as **Request Progress Report**; `time` is a Unix timestamp) |\n| `residents` | Array of resident details from the landlord response (`Name`, `Email`, `DateOfBirth`, `SSLastFour`) |\n| `reference` | Landlord's answers (rent amount, move-in/out dates, late payments, eviction, animals, etc.) |\n| `referenceProvider` | Landlord who provided the reference (`Name`, `Email`, `CompanyName`, `Phone`, `verificationStatus`, `validationNotes`) |\n| `requester` | Person/company who submitted the request (report format) |\n\n### Completed status variants\n\n| `requestStatus` | Meaning |\n| --- | --- |\n| `completed_verified_landlord` | Landlord verified as legitimate owner or property manager |\n| `completed_landlord_not_verified` | Report complete; landlord legitimacy could not be verified — review before relying on the reference |\n| `completed_invalid_landlord` | Reference did not come from the legitimate landlord or property manager |\n\n### Key `reference` fields\n\n| Field | Description |\n| --- | --- |\n| `TenancyAddress` | Rental property address |\n| `ReferenceStatus` | `current` or `past` tenancy |\n| `MoveInDate` / `MoveOutDate` | Tenancy dates (`YYYY-MM-DD`) |\n| `RentAmount` | Monthly rent (formatted, e.g. `$2,500`) |\n| `LatePayments` | Whether resident made late payments (`Yes`/`No`) |\n| `Eviction` | Whether an eviction was filed (`Yes`/`No`) |\n| `AnimalsAuthorized` / `AnimalsUnauthorized` | `true`/`false` when animals were reported; `null` when resident had no animals |\n| `OwnsBalance` | `1`/`0` — resident currently owes money (current residents) or left owing funds (previous residents) |\n| `LeftOwningBalance` | Amount owed, formatted like `$5,000`, or `0` when none |\n| `LandlordComment` | Free-text comment from the landlord |\n\n## Common errors\n\n| HTTP status | Cause |\n| --- | --- |\n| `422` | `id` query parameter missing (`errors.id`) |\n| `403` | API key does not own this request |\n| `404` | Invalid request ID |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestId\": \"5460\",\n  \"requestStatus\": \"completed_verified_landlord\",\n  \"request\": {\n    \"LandlordFirstName\": \"Rachel\",\n    \"LandlordLastName\": \"Nguyen\",\n    \"LandlordEmail\": \"landlord@example.com\",\n    \"residents\": [\n      {\n        \"ResidentId\": 77,\n        \"ResidentFirstName\": \"Ava\",\n        \"ResidentLastName\": \"Thompson\",\n        \"ResidentEmail\": \"resident@example.com\"\n      }\n    ]\n  },\n  \"progress\": [\n    {\n      \"time\": 1722950533,\n      \"comment\": \"Rental verification request created\"\n    },\n    {\n      \"time\": 1723022100,\n      \"comment\": \"Landlord provided reference\"\n    }\n  ],\n  \"residents\": [\n    {\n      \"Name\": \"Ava Thompson\",\n      \"Email\": \"resident@example.com\",\n      \"DateOfBirth\": \"1993-02-11\",\n      \"SSLastFour\": \"3412\"\n    }\n  ],\n  \"reference\": {\n    \"TenancyAddress\": \"525 Market Street, San Francisco, CA 94105\",\n    \"ReferenceStatus\": \"current\",\n    \"IsCurrentResident\": 1,\n    \"MoveInDate\": \"2021-06-01\",\n    \"MoveOutDate\": null,\n    \"RentAmount\": \"$3,200\",\n    \"Animals\": 1,\n    \"AnimalsType\": \"Dog\",\n    \"AnimalsAuthorized\": true,\n    \"AnimalsUnauthorized\": false,\n    \"LatePayments\": 0,\n    \"Eviction\": 0,\n    \"OwnsBalance\": 1,\n    \"LeftOwningBalance\": \"$5000\",\n    \"LandlordComment\": \"Tenant is current and owes back rent.\"\n  },\n  \"referenceProvider\": {\n    \"Name\": \"Rachel Nguyen\",\n    \"Email\": \"landlord@example.com\",\n    \"CompanyName\": \"Bayview Property Management\",\n    \"Phone\": \"6285553901\",\n    \"verificationStatus\": \"Completed\",\n    \"validationNotes\": \"\"\n  },\n  \"requester\": {\n    \"FirstName\": \"Lucas\",\n    \"LastName\": \"Perez\",\n    \"Email\": \"requester@example.com\",\n    \"CompanyName\": \"UrbanNest Apartments\"\n  }\n}"}],"_postman_id":"442dc1f1-7723-4a56-aeb9-3ca8137544c3"},{"name":"Cancel Request","id":"b301e103-f39e-4bea-a5ef-deeda418b1cd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"api-key"},{"key":"value","value":"{{API_KEY}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"<p>Request content type</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"id\": {{REQUEST_ID}}\n}"},"url":"{{API_URL}}/api/v1/cancel-request?_format=json","description":"<p>Cancel an in-progress landlord reference request.</p>\n<p>Use this endpoint when a verification is no longer needed. Cancellation is permanent and cannot be undone.</p>\n<h2 id=\"when-cancellation-is-allowed\">When cancellation is allowed</h2>\n<p>The request must be in one of these statuses:</p>\n<ul>\n<li><code>pending_landlord_response</code></li>\n<li><code>landlord_legitimacy_check</code></li>\n</ul>\n<p>Requests that are already <code>canceled</code>, any completed status (<code>completed_verified_landlord</code>, <code>completed_landlord_not_verified</code>, <code>completed_invalid_landlord</code>), <code>declined</code>, or <code>expired_no_landlord_response</code> cannot be canceled.</p>\n<h2 id=\"request-body\">Request body</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Request ID returned from <strong>Request Landlord Reference</strong></td>\n<td>Yes</td>\n<td>Integer</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"success-response-200\">Success response (<code>200</code>)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"requestId\": 5460,\n  \"requestStatus\": \"canceled\"\n}\n</code></pre>\n<h2 id=\"common-errors\">Common errors</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Message</th>\n<th>Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td><code>Request id is required!</code></td>\n<td><code>id</code> missing from body</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>Request is already canceled.</code></td>\n<td>Request was previously canceled</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>Request cannot be canceled in its current status.</code></td>\n<td>Status does not allow cancellation</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td><code>Access Denied!</code></td>\n<td>API key does not own this request</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td><code>No request found!</code></td>\n<td>Invalid request ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","cancel-request"],"host":["{{API_URL}}"],"query":[{"description":{"content":"<p>Response format</p>\n","type":"text/plain"},"key":"_format","value":"json"}],"variable":[]}},"response":[{"id":"6ae37db7-ac97-4ba4-a1ce-ce3499bc8c0e","name":"Success","originalRequest":{"auth":{"type":"apikey","apikey":{"value":"{{API_KEY}}","key":"api-key"}},"method":"POST","header":[{"value":"application/json","key":"Content-Type","description":"Request content type"}],"body":{"mode":"raw","raw":"{\n  \"id\": {{REQUEST_ID}}\n}"},"url":{"raw":"{{API_URL}}/api/v1/cancel-request?_format=json","host":["{{API_URL}}"],"path":["api","v1","cancel-request"],"query":[{"value":"json","key":"_format","description":"Response format"}]},"description":"Cancel an in-progress landlord reference request.\n\nUse this endpoint when a verification is no longer needed. Cancellation is permanent and cannot be undone.\n\n## When cancellation is allowed\n\nThe request must be in one of these statuses:\n\n- `pending_landlord_response`\n- `landlord_legitimacy_check`\n\nRequests that are already `canceled`, any completed status (`completed_verified_landlord`, `completed_landlord_not_verified`, `completed_invalid_landlord`), `declined`, or `expired_no_landlord_response` cannot be canceled.\n\n## Request body\n\n| Field | Description | Required | Type |\n| --- | --- | --- | --- |\n| `id` | Request ID returned from **Request Landlord Reference** | Yes | Integer |\n\n## Success response (`200`)\n\n```json\n{\n  \"requestId\": 5460,\n  \"requestStatus\": \"canceled\"\n}\n```\n\n## Common errors\n\n| HTTP status | Message | Cause |\n| --- | --- | --- |\n| `400` | `Request id is required!` | `id` missing from body |\n| `400` | `Request is already canceled.` | Request was previously canceled |\n| `400` | `Request cannot be canceled in its current status.` | Status does not allow cancellation |\n| `403` | `Access Denied!` | API key does not own this request |\n| `404` | `No request found!` | Invalid request ID |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestId\": 5460,\n  \"requestStatus\": \"canceled\"\n}"},{"id":"7e4c911c-4e1f-4d4a-84e8-6c7875deca73","name":"Cannot Cancel - Wrong Status","originalRequest":{"auth":{"type":"apikey","apikey":{"value":"{{API_KEY}}","key":"api-key"}},"method":"POST","header":[{"value":"application/json","key":"Content-Type","description":"Request content type"}],"body":{"mode":"raw","raw":"{\n  \"id\": {{REQUEST_ID}}\n}"},"url":{"raw":"{{API_URL}}/api/v1/cancel-request?_format=json","host":["{{API_URL}}"],"path":["api","v1","cancel-request"],"query":[{"value":"json","key":"_format","description":"Response format"}]},"description":"Cancel an in-progress landlord reference request.\n\nUse this endpoint when a verification is no longer needed. Cancellation is permanent and cannot be undone.\n\n## When cancellation is allowed\n\nThe request must be in one of these statuses:\n\n- `pending_landlord_response`\n- `landlord_legitimacy_check`\n\nRequests that are already `canceled`, any completed status (`completed_verified_landlord`, `completed_landlord_not_verified`, `completed_invalid_landlord`), `declined`, or `expired_no_landlord_response` cannot be canceled.\n\n## Request body\n\n| Field | Description | Required | Type |\n| --- | --- | --- | --- |\n| `id` | Request ID returned from **Request Landlord Reference** | Yes | Integer |\n\n## Success response (`200`)\n\n```json\n{\n  \"requestId\": 5460,\n  \"requestStatus\": \"canceled\"\n}\n```\n\n## Common errors\n\n| HTTP status | Message | Cause |\n| --- | --- | --- |\n| `400` | `Request id is required!` | `id` missing from body |\n| `400` | `Request is already canceled.` | Request was previously canceled |\n| `400` | `Request cannot be canceled in its current status.` | Status does not allow cancellation |\n| `403` | `Access Denied!` | API key does not own this request |\n| `404` | `No request found!` | Invalid request ID |"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Request cannot be canceled in its current status.\"\n}"}],"_postman_id":"b301e103-f39e-4bea-a5ef-deeda418b1cd"},{"name":"Modify Request","id":"1722667d-15e3-4820-b6e8-3818d83ce051","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"api-key"},{"key":"value","value":"{{API_KEY}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"<p>Request content type</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"id\": {{REQUEST_ID}},\n  \"LandlordEmail\": \"corrected-landlord@example.com\",\n  \"LandlordPhoneNumber\": \"6285553901\",\n  \"PropertyAddress\": {\n    \"country_code\": \"US\",\n    \"address_line1\": \"525 Market Street\",\n    \"address_line2\": \"Apt 14D\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"zip\": \"94105\"\n  },\n  \"updateResidents\": [\n    {\n      \"ResidentEmail\": \"resident@example.com\",\n      \"ResidentPhoneNumber\": \"4155552109\"\n    }\n  ]\n}"},"url":"{{API_URL}}/api/v1/modify-request?_format=json","description":"<p>Update an existing landlord reference request before the landlord responds.</p>\n<p>Use this endpoint to correct landlord contact details, the rental property address, or the list of residents on a request.</p>\n<h2 id=\"when-modification-is-allowed\">When modification is allowed</h2>\n<p>Modification is only permitted while the request status is <strong><code>pending_landlord_response</code></strong>. Once the landlord has responded or verification has started, use <strong>Cancel Request</strong> and submit a new request instead.</p>\n<h2 id=\"request-body\">Request body</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Request ID returned from <strong>Request Landlord Reference</strong></td>\n<td>Yes</td>\n<td>Integer</td>\n</tr>\n<tr>\n<td><code>LandlordFirstName</code></td>\n<td>Updated landlord first name</td>\n<td>No*</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordLastName</code></td>\n<td>Updated landlord last name</td>\n<td>No*</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordCompanyName</code></td>\n<td>Updated landlord company name</td>\n<td>No*</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordEmail</code></td>\n<td>Updated landlord email (validated for deliverability)</td>\n<td>No*</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordPhoneNumber</code></td>\n<td>Updated landlord phone (10-digit US; validated for reachability via Melissa)</td>\n<td>No*</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>LandlordPhoneNumberConfirmed</code></td>\n<td>Set to <code>true</code> to skip Melissa reachability check when updating <code>LandlordPhoneNumber</code> (false-positive override)</td>\n<td>No*</td>\n<td>Boolean</td>\n</tr>\n<tr>\n<td><code>PropertyAddress</code></td>\n<td>Full replacement property address object</td>\n<td>No*</td>\n<td>Object</td>\n</tr>\n<tr>\n<td><code>addResidents</code></td>\n<td>Residents to add to the request</td>\n<td>No*</td>\n<td>Array</td>\n</tr>\n<tr>\n<td><code>updateResidents</code></td>\n<td>Residents to update on the request</td>\n<td>No*</td>\n<td>Array</td>\n</tr>\n<tr>\n<td><code>removeResidents</code></td>\n<td>Resident email addresses to remove</td>\n<td>No*</td>\n<td>Array of strings</td>\n</tr>\n</tbody>\n</table>\n</div><p>*At least one modifiable field (besides <code>id</code>) is required.</p>\n<h3 id=\"propertyaddress-object\">PropertyAddress object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>country_code</code></td>\n<td>Yes</td>\n<td>String (e.g. <code>US</code>)</td>\n</tr>\n<tr>\n<td><code>address_line1</code></td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>address_line2</code></td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>Yes</td>\n<td>String (2-letter code)</td>\n</tr>\n<tr>\n<td><code>zip</code></td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"addresidents-object\">addResidents[] object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ResidentFirstName</code></td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentLastName</code></td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentMiddleName</code></td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentEmail</code></td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentDateOfBirth</code></td>\n<td>Yes</td>\n<td>String (<code>YYYY-MM-DD</code>)</td>\n</tr>\n<tr>\n<td><code>ResidentSsnLastFour</code></td>\n<td>Yes</td>\n<td>String (4 digits)</td>\n</tr>\n<tr>\n<td><code>ResidentPhoneNumber</code></td>\n<td>No</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentSignedConsentFid</code></td>\n<td>Yes</td>\n<td>Integer (from <strong>Consent File Upload</strong>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"updateresidents-object\">updateResidents[] object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ResidentId</code></td>\n<td>No*</td>\n<td>Integer (user ID of the resident on the request)</td>\n</tr>\n<tr>\n<td><code>ResidentEmail</code></td>\n<td>No*</td>\n<td>String (current email on the request; used to identify the resident when multiple residents are attached)</td>\n</tr>\n<tr>\n<td><code>ResidentNewEmail</code></td>\n<td>No**</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code>ResidentPhoneNumber</code></td>\n<td>No**</td>\n<td>String</td>\n</tr>\n</tbody>\n</table>\n</div><p>*When the request has a single resident, neither <code>ResidentId</code> nor <code>ResidentEmail</code> is required — the attached resident is updated directly (e.g. to correct a wrong email). When multiple residents are attached, provide <code>ResidentId</code> or <code>ResidentEmail</code> to identify which resident to update.</p>\n<p>**At least one of <code>ResidentNewEmail</code> or <code>ResidentPhoneNumber</code> must be provided per entry.</p>\n<h3 id=\"removeresidents\">removeResidents</h3>\n<p>Array of resident email addresses to remove. At least one resident must remain on the request.</p>\n<h2 id=\"success-response-200\">Success response (<code>200</code>)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"requestId\": 5460,\n  \"requestStatus\": \"pending_landlord_response\"\n}\n</code></pre>\n<h2 id=\"common-errors\">Common errors</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Message</th>\n<th>Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td><code>Request id is required!</code></td>\n<td><code>id</code> missing</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>At least one modifiable field is required.</code></td>\n<td>Only <code>id</code> was sent</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>Request cannot be modified in its current status.</code></td>\n<td>Status is not <code>pending_landlord_response</code></td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>At least one resident must remain on the request.</code></td>\n<td><code>removeResidents</code> would remove all residents</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td><code>Access Denied!</code></td>\n<td>API key does not own this request</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td><code>No request found!</code></td>\n<td>Invalid request ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","modify-request"],"host":["{{API_URL}}"],"query":[{"description":{"content":"<p>Response format</p>\n","type":"text/plain"},"key":"_format","value":"json"}],"variable":[]}},"response":[{"id":"eb7154a1-5a29-4876-8048-32def2b5776c","name":"Success","originalRequest":{"auth":{"type":"apikey","apikey":{"value":"{{API_KEY}}","key":"api-key"}},"method":"POST","header":[{"value":"application/json","key":"Content-Type","description":"Request content type"}],"body":{"mode":"raw","raw":"{\n  \"id\": {{REQUEST_ID}},\n  \"LandlordEmail\": \"corrected-landlord@example.com\",\n  \"LandlordPhoneNumber\": \"6285553901\",\n  \"PropertyAddress\": {\n    \"country_code\": \"US\",\n    \"address_line1\": \"525 Market Street\",\n    \"address_line2\": \"Apt 14D\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"zip\": \"94105\"\n  },\n  \"updateResidents\": [\n    {\n      \"ResidentEmail\": \"resident@example.com\",\n      \"ResidentPhoneNumber\": \"4155552109\"\n    }\n  ]\n}"},"url":{"raw":"{{API_URL}}/api/v1/modify-request?_format=json","host":["{{API_URL}}"],"path":["api","v1","modify-request"],"query":[{"description":"Response format","value":"json","key":"_format"}]},"description":"Update an existing landlord reference request before the landlord responds.\n\nUse this endpoint to correct landlord contact details, the rental property address, or the list of residents on a request.\n\n## When modification is allowed\n\nModification is only permitted while the request status is **`pending_landlord_response`**. Once the landlord has responded or verification has started, use **Cancel Request** and submit a new request instead.\n\n## Request body\n\n| Field | Description | Required | Type |\n| --- | --- | --- | --- |\n| `id` | Request ID returned from **Request Landlord Reference** | Yes | Integer |\n| `LandlordFirstName` | Updated landlord first name | No* | String |\n| `LandlordLastName` | Updated landlord last name | No* | String |\n| `LandlordCompanyName` | Updated landlord company name | No* | String |\n| `LandlordEmail` | Updated landlord email (validated for deliverability) | No* | String |\n| `LandlordPhoneNumber` | Updated landlord phone (10-digit US; validated for reachability via Melissa) | No* | String |\n| `LandlordPhoneNumberConfirmed` | Set to `true` to skip Melissa reachability check when updating `LandlordPhoneNumber` (false-positive override) | No* | Boolean |\n| `PropertyAddress` | Full replacement property address object | No* | Object |\n| `addResidents` | Residents to add to the request | No* | Array |\n| `updateResidents` | Residents to update on the request | No* | Array |\n| `removeResidents` | Resident email addresses to remove | No* | Array of strings |\n\n\\*At least one modifiable field (besides `id`) is required.\n\n### PropertyAddress object\n\n| Field | Required | Type |\n| --- | --- | --- |\n| `country_code` | Yes | String (e.g. `US`) |\n| `address_line1` | Yes | String |\n| `address_line2` | No | String |\n| `city` | Yes | String |\n| `state` | Yes | String (2-letter code) |\n| `zip` | Yes | String |\n\n### addResidents[] object\n\n| Field | Required | Type |\n| --- | --- | --- |\n| `ResidentFirstName` | Yes | String |\n| `ResidentLastName` | Yes | String |\n| `ResidentMiddleName` | No | String |\n| `ResidentEmail` | Yes | String |\n| `ResidentDateOfBirth` | Yes | String (`YYYY-MM-DD`) |\n| `ResidentSsnLastFour` | Yes | String (4 digits) |\n| `ResidentPhoneNumber` | No | String |\n| `ResidentSignedConsentFid` | Yes | Integer (from **Consent File Upload**) |\n\n### updateResidents[] object\n\n| Field | Required | Type |\n| --- | --- | --- |\n| `ResidentId` | No* | Integer (user ID of the resident on the request) |\n| `ResidentEmail` | No* | String (current email on the request; used to identify the resident when multiple residents are attached) |\n| `ResidentNewEmail` | No** | String |\n| `ResidentPhoneNumber` | No** | String |\n\n\\*When the request has a single resident, neither `ResidentId` nor `ResidentEmail` is required — the attached resident is updated directly (e.g. to correct a wrong email). When multiple residents are attached, provide `ResidentId` or `ResidentEmail` to identify which resident to update.\n\n\\**At least one of `ResidentNewEmail` or `ResidentPhoneNumber` must be provided per entry.\n\n### removeResidents\n\nArray of resident email addresses to remove. At least one resident must remain on the request.\n\n## Success response (`200`)\n\n```json\n{\n  \"requestId\": 5460,\n  \"requestStatus\": \"pending_landlord_response\"\n}\n```\n\n## Common errors\n\n| HTTP status | Message | Cause |\n| --- | --- | --- |\n| `400` | `Request id is required!` | `id` missing |\n| `400` | `At least one modifiable field is required.` | Only `id` was sent |\n| `400` | `Request cannot be modified in its current status.` | Status is not `pending_landlord_response` |\n| `400` | `At least one resident must remain on the request.` | `removeResidents` would remove all residents |\n| `403` | `Access Denied!` | API key does not own this request |\n| `404` | `No request found!` | Invalid request ID |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestId\": 5460,\n  \"requestStatus\": \"pending_landlord_response\"\n}"},{"id":"3bc4345e-06c4-460d-a843-29d9a397421e","name":"Cannot Modify - Wrong Status","originalRequest":{"auth":{"type":"apikey","apikey":{"value":"{{API_KEY}}","key":"api-key"}},"method":"POST","header":[{"value":"application/json","key":"Content-Type","description":"Request content type"}],"body":{"mode":"raw","raw":"{\n  \"id\": {{REQUEST_ID}},\n  \"LandlordEmail\": \"corrected-landlord@example.com\",\n  \"LandlordPhoneNumber\": \"6285553901\",\n  \"PropertyAddress\": {\n    \"country_code\": \"US\",\n    \"address_line1\": \"525 Market Street\",\n    \"address_line2\": \"Apt 14D\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"zip\": \"94105\"\n  },\n  \"updateResidents\": [\n    {\n      \"ResidentEmail\": \"resident@example.com\",\n      \"ResidentPhoneNumber\": \"4155552109\"\n    }\n  ]\n}"},"url":{"raw":"{{API_URL}}/api/v1/modify-request?_format=json","host":["{{API_URL}}"],"path":["api","v1","modify-request"],"query":[{"description":"Response format","value":"json","key":"_format"}]},"description":"Update an existing landlord reference request before the landlord responds.\n\nUse this endpoint to correct landlord contact details, the rental property address, or the list of residents on a request.\n\n## When modification is allowed\n\nModification is only permitted while the request status is **`pending_landlord_response`**. Once the landlord has responded or verification has started, use **Cancel Request** and submit a new request instead.\n\n## Request body\n\n| Field | Description | Required | Type |\n| --- | --- | --- | --- |\n| `id` | Request ID returned from **Request Landlord Reference** | Yes | Integer |\n| `LandlordFirstName` | Updated landlord first name | No* | String |\n| `LandlordLastName` | Updated landlord last name | No* | String |\n| `LandlordCompanyName` | Updated landlord company name | No* | String |\n| `LandlordEmail` | Updated landlord email (validated for deliverability) | No* | String |\n| `LandlordPhoneNumber` | Updated landlord phone (10-digit US; validated for reachability via Melissa) | No* | String |\n| `LandlordPhoneNumberConfirmed` | Set to `true` to skip Melissa reachability check when updating `LandlordPhoneNumber` (false-positive override) | No* | Boolean |\n| `PropertyAddress` | Full replacement property address object | No* | Object |\n| `addResidents` | Residents to add to the request | No* | Array |\n| `updateResidents` | Residents to update on the request | No* | Array |\n| `removeResidents` | Resident email addresses to remove | No* | Array of strings |\n\n\\*At least one modifiable field (besides `id`) is required.\n\n### PropertyAddress object\n\n| Field | Required | Type |\n| --- | --- | --- |\n| `country_code` | Yes | String (e.g. `US`) |\n| `address_line1` | Yes | String |\n| `address_line2` | No | String |\n| `city` | Yes | String |\n| `state` | Yes | String (2-letter code) |\n| `zip` | Yes | String |\n\n### addResidents[] object\n\n| Field | Required | Type |\n| --- | --- | --- |\n| `ResidentFirstName` | Yes | String |\n| `ResidentLastName` | Yes | String |\n| `ResidentMiddleName` | No | String |\n| `ResidentEmail` | Yes | String |\n| `ResidentDateOfBirth` | Yes | String (`YYYY-MM-DD`) |\n| `ResidentSsnLastFour` | Yes | String (4 digits) |\n| `ResidentPhoneNumber` | No | String |\n| `ResidentSignedConsentFid` | Yes | Integer (from **Consent File Upload**) |\n\n### updateResidents[] object\n\n| Field | Required | Type |\n| --- | --- | --- |\n| `ResidentId` | No* | Integer (user ID of the resident on the request) |\n| `ResidentEmail` | No* | String (current email on the request; used to identify the resident when multiple residents are attached) |\n| `ResidentNewEmail` | No** | String |\n| `ResidentPhoneNumber` | No** | String |\n\n\\*When the request has a single resident, neither `ResidentId` nor `ResidentEmail` is required — the attached resident is updated directly (e.g. to correct a wrong email). When multiple residents are attached, provide `ResidentId` or `ResidentEmail` to identify which resident to update.\n\n\\**At least one of `ResidentNewEmail` or `ResidentPhoneNumber` must be provided per entry.\n\n### removeResidents\n\nArray of resident email addresses to remove. At least one resident must remain on the request.\n\n## Success response (`200`)\n\n```json\n{\n  \"requestId\": 5460,\n  \"requestStatus\": \"pending_landlord_response\"\n}\n```\n\n## Common errors\n\n| HTTP status | Message | Cause |\n| --- | --- | --- |\n| `400` | `Request id is required!` | `id` missing |\n| `400` | `At least one modifiable field is required.` | Only `id` was sent |\n| `400` | `Request cannot be modified in its current status.` | Status is not `pending_landlord_response` |\n| `400` | `At least one resident must remain on the request.` | `removeResidents` would remove all residents |\n| `403` | `Access Denied!` | API key does not own this request |\n| `404` | `No request found!` | Invalid request ID |"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Request cannot be modified in its current status.\"\n}"}],"_postman_id":"1722667d-15e3-4820-b6e8-3818d83ce051"}]}