API – Document Upload


This article explains how to upload documents through the API, but you can also upload common and customer-specific documents within the LoanPro UI.

Uploading a document through the API is a two-step process:

  1. Send a POST to receive a pre-signed S3 upload URL
  2. Upload the document to S3 using the pre-signed URL

At this point, you can make changes to the document properties

When you pull document information through the API the active property will show 0 for all documents. The active property is no longer used to show if a document is active. The archived property is now used to show whether the document is active/archived. So, 0 means it has not been archived and 1 means archived.

Get a Pre-Signed URL

To get a pre-signed URL, send a POST request to either of the following URLs, depending on whether you are uploading a loan document or a customer document:

  • /api/public/api/1/Loans({ID})/document/upload
  • /api/public/api/1/Customers({ID})/document/upload

The payload should contain the following:

  • sectionId (required) - The ID of the document section. This must be an ID that exists within your LoanPro account.
  • fileName (required) - Name of the file that will be uploaded. This must match the actual file name.
  • customFileName (optional) - Custom file name. This doesn't need to match the actual file name, and will be a label used in LoanPro.
  • size (optional) - Size of the file in bytes.

Your payload should look something like this:

"sectionId": 1,
"fileName": "test.jpg",
"size": 160000,
"customFileName": "other_name.jpg"

The response should look something like this:

"d": {
"id": "89",
"fileName": "test_1572647511.jpg",
"uploadUrl": "https://autopal-fandora.s3.amazonaws.com/tenants/1/fileAttachments/LoanDocuments/89/test_1572647511.jpg?
"customFileName": "test.jpg",
"mime": "image/jpeg"

The response includes the following:

  • id - The ID of the created Document.
  • fileName - System-generated unique filename (usually the file name with a number appended).
  • customFileName - Name provided in the request payload.
  • mime - Identified MIME type based on the file extension.
  • uploadUrl - S3 url where the file must be uploaded. This link has an expiration time of 10 minutes.

The example below demonstrates how to do this:

Upload the File

Now the file can be uploaded to the url received. This can be done using a PUT request to the URL that includes the file.

Here is a cURL example:

curl --upload-file "/home/user/Documents/send/test.jpg" 

Updating Documents

To update a document, send a PUT request to the url of the document. For Loan documents, it is:


and for customer documents it is:


In both cases, replace “<id>” with the ID of the document.

Changing Active Status

To inactivate a document, the "archived" property should be changed from a 0 to a 1. To do this, send a PUT request with a body that looks something like the following:

  "id": 59,
  "archived": 1,
"__update": true,
"__id": 59

Changing Customer visibility

To change the customer visibility of the document, send a PUT request with the body formatted as follows:

  "id": 59,
  "customerVisible": 1,
"__update": true,
"__id": 59
  • customerVisible – Set to “1” to allow the customer to see the document on the customer website
  • id – The ID of the document being updated

Updating Metadata

To update the metadata of a document, send a PUT request with the body formatted as follows:

  "id": 76,
  "sectionId": "5",
  "description": "this is a description",
  "fileName": "test.png",
"__id": 76,
"__update": true
  • id – The ID of the document to update
  • sectionId – The document’s section ID
  • description – The description for the document
  • fileName – The file name for the document
Note: The sectionId must be a valid one. See Create New Loan Document Section or Create New Customer Document Section for help creating new document sections.

How did we do?

Powered by HelpDocs (opens in a new tab)