Skip to content

Loans

This endpoint retrieves all loans, and can take a number of query parameters.

GET https://sandbox.reggora.io/lender/loans

ParameterDefaultDescription
offset0Number of loans to skip before list gets returned (Used in pagination).
limit0Limit of loans to return (If set to 0 there is no limit).
ordering-createdThe field to order loans by.
loan_officerNoneID of loan officer to filter loans by.
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# Just an example
query_params = {
'offset': 0,
'limit': 10,
'ordering': '-created',
}
response = requests.get('https://sandbox.reggora.io/lender/loans', params=query_params, headers=headers)
{
"data": {
"loans": [
{
"id": "5c33c6b1681f110034effc72",
"loan_number": "1002918281901",
"loan_officer": {
"id": "5b5b19d3c643b3000f8f2857",
"email": "hello@world.com",
"phone_number": "555-444-1234",
"firstname": "John",
"lastname": "Doe"
},
"appraisal_type": "Refinance",
"due_date": "2018-12-19 12:00:00",
"created": "2019-01-07 21:37:53.938000",
"updated": "2019-01-07 21:37:53.938000",
"related_order": "5c33c716681f111134effc73",
"subject_property_address": "100 Mass Ave",
"subject_property_city": "Boston",
"subject_property_state": "MA",
"subject_property_zip": "02192",
"case_number": "10029MA",
"loan_type": "FHA",
"matched_products": ["5b5b19d3c643b3000f8f2859"],
"consumers": [{
"id": "5c33c716681f110034effc73",
"full_name": "John Smith",
"role": "borrower",
"email": "john@reggora.com",
"home_phone": "999-999-9999",
"work_phone": "999-999-9999",
"cell_phone": "999-999-9999",
"is_primary_contact": true
}]
},
"..."
]
},
"status": 200
}

The "..." placeholder indicates additional entries elided for brevity.

This endpoint retrieves a specific loan by id.

GET https://sandbox.reggora.io/lender/loan/<loan_id>

ParameterDescription
loan_idThe ID of the loan.
ParameterDefaultDescription
additionalfalseInclusion of additional property data.
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.get('https://sandbox.reggora.io/lender/loan/<loan_id>', headers=headers)
{
"data": {
"loan": {
"id": "5c33c716681f110034effc73",
"loan_number": "1",
"loan_officer": {
"id": "5b5b19d3c643b3000f8f2857",
"email": "hello@world.com",
"phone_number": "555-444-1234",
"firstname": "John",
"lastname": "Doe"
},
"appraisal_type": "Refinance",
"due_date": "2018-12-19 12:00:00",
"created": "2019-01-07 21:39:34.018000",
"updated": "2019-01-07 21:39:34.018000",
"related_order": "5c33c716681f111134effc73",
"subject_property_address": "100 Mass Ave",
"subject_property_city": "Boston",
"subject_property_state": "MA",
"subject_property_zip": "02192",
"case_number": "10029MA",
"loan_type": "FHA",
"matched_products": ["5b5b19d3c643b3000f8f2859"],
"consumers": [{
"id": "5c33c716681f110034effc73",
"full_name": "John Smith",
"role": "borrower",
"email": "john@reggora.com",
"home_phone": "999-999-9999",
"work_phone": "999-999-9999",
"cell_phone": "999-999-9999",
"is_primary_contact": true
}]
}
},
"status": 200
}

This endpoint deletes a specific loan.

DELETE https://sandbox.reggora.io/lender/loan/<loan_id>

ParameterDescription
loan_idThe ID of the loan.
import requests
response = requests.delete('https://sandbox.reggora.io/lender/loan/<loan_id>', headers=headers)
{
"data": "Loan deleted.",
"status": 200
}

This endpoint creates a loan and returns the ID of the created loan. This does not support custom fields or a custom schema.

POST https://sandbox.reggora.io/lender/loan

ParameterDescriptionRequired
loan_numberThe unique loan identifierTrue
due_dateUTC formatted due date of the loan file (Using TZ formatting).True
appraisal_typeAppraisal Type (Refinance, Purchase, etc…)True
loan_officerId of the loan officer associated with this loanFalse
subject_property_addressStreet address of loanTrue
subject_property_cityCity of the loanTrue
subject_property_stateState of loanTrue
subject_property_zip5 digit zip code of the loanTrue
loan_typeType of loan (FHA…)False
case_numberCase numberFalse
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
body = {
"loan_number": "2",
"loan_officer": "5b5b19d3c643b3000f8f2857",
"appraisal_type": "Refinance",
"due_date": "2018-12-19T12:00:00Z",
"subject_property_address": "100 Mass Ave",
"subject_property_city": "Boston",
"subject_property_state": "MA",
"subject_property_zip": "02192",
"case_number": "10029MA",
"loan_type": "FHA"
}
response = requests.post('https://sandbox.reggora.io/lender/loan', json=body, headers=headers)
{
"data": "5c33c716681f110034effc73",
"status": 200
}

This endpoint edits a loan and returns the ID of the edited loan. Only the provided fields will be updated. This does not support custom fields or a custom schema.

PUT https://sandbox.reggora.io/lender/loan/<loan_id>

ParameterDescriptionRequired
loan_idId of the loanTrue
ParameterDescriptionRequired
loan_numberThe unique loan identifierFalse
due_dateUTC formatted due date of the loan file (Using TZ formatting).False
appraisal_typeAppraisal Type (Refinance, Purchase, etc…)False
loan_officerId of the loan officer associated with this loanFalse
subject_property_addressStreet address of loanFalse
subject_property_cityCity of the loanFalse
subject_property_stateState of loanFalse
subject_property_zip5 digit zip code of the loanFalse
loan_typeType of loan (FHA…)False
case_numberCase numberFalse
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
body = {
"due_date": "2018-12-20T12:00:00Z",
"case_number": "129MA",
}
response = requests.put('https://sandbox.reggora.io/lender/loan/<loan_id>', json=body, headers=headers)
{
"data": "5c33c716681f110034effc73",
"status": 200
}

This endpoint creates a loan using parameters that match the lender’s loan schema and returns the ID of the created loan. This endpoint allows you to use a custom schema as well as custom fields that you set up in the Settings tab within the lender platform.

POST https://sandbox.reggora.io/lender/extended_loan

ParameterDescriptionRequired
loanJSON object with keys that match the lender’s loan schema.True
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# below is an example
# the keys in the loan params JSON should match the lender's loan schema
body = {
"loan":
{
"Loan Number":"12345",
"Borrower Name":"Michael Jordan",
"Subject Property City":"Boston",
"Subject Property State":"MA",
"Subject Property Address":"1 Main St.",
"Appraisal Due Date":"2/20/2020",
"Sellers Agent":"John Agent",
"Sellers Agent Phone":"5551112222",
"Sellers Agent E-mail":"sellersagent@gmail.com",
"ULDD Attachment Type":"Detached",
"Occupancy (P/S/I)":"Primary",
"Loan Type":"Conventional",
"Commit Due":"2/25/20"
}
}
response = requests.post('https://sandbox.reggora.io/lender/extended_loan', json=body, headers=headers)
{
"data": "5c33c716681f110034effc73",
"status": 200
}

This endpoint edits a loan using parameters that match the lender’s loan schema and returns the ID of the edited loan. Only the provided fields will be updated.

PUT https://sandbox.reggora.io/lender/extended_loan/<loan_id>

ParameterDescriptionRequired
loan_idId of the loanTrue
ParameterDescriptionRequired
loanJSON object with keys that match the lender’s loan schema.True
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# below is an example
# the keys in the loan params JSON should match the lender's loan schema
body = {
"loan":
{
"Subject Property City":"Cambridge",
"Subject Property Address":"2 Main St."
}
}
response = requests.put('https://sandbox.reggora.io/lender/extended_loan/<loan_id>', json=body, headers=headers)
{
"data": "5c33c716681f110034effc73",
"status": 200
}

This endpoint retrieves a lender’s loan schema which can be used to create and edit extended loans. Extended loans support a custom schema defined in the Lender platform’s settings tab as well as custom fields and metadata.

GET https://sandbox.reggora.io/lender/extended_loan

import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.get('https://sandbox.reggora.io/lender/extended_loan', headers=headers)

Actual field names will vary based on lender’s loan schema.

{
"data": [
"Subject Property City",
"Subject Property State",
"Subject Property ZIP",
"Subject Property Address",
"Rush",
"Sellers Agent",
"Sellers Agent Phone",
"Commit Due",
"Seller Agnt Cell Phone",
"Borr Cell",
"Borr Home Phone",
"Borr Business Phone",
"Borr Email",
"Collect at Close",
"Borrower Name",
"Co-Borrower Name",
"Co-Borr Email",
"Loan Type",
"Loan Number",
"Branch Name",
"Occupancy (P/S/I)",
"Subject Property #Units",
"ULDD Attachment Type",
"Purchase Value",
"Expected Value"
],
"status": 200
}

This endpoint creates an external review result for a loan. That result may then be used to store documents related to the review. Can have side effects on the order if reggora_order_id is included.

POST https://sandbox.reggora.io/lender/loan/<loan_id>/review

ParameterDescription
loan_idThe Reggora ID of the loan that corresponds to this review.
ParameterDescriptionRequired
reggora_order_idstr ID of the Order in Reggora. The Order should correspond to the Loan. Include if the review result is specific to one Order. If included, the Order’s most recent submission will be approved and the status will move from “Under Review” to “Submitted”False
reggora_loan_idstr ID of the Loan in Reggora. Should match loan_id URL param if included, but the URL param will take precedence.False
cu_scoreIf the review result includes results from Fannie Mae, include the CU Score.False
lca_scoreIf the review result includes results from Freddie Mac, include the LCA score.False
case_idstr ID used externally to identify this review case or the loanFalse
order_idstr ID used externally to identify the order for this review resultFalse
ucdp_document_idstr ID used by UCDP for this loanFalse
ead_document_idstr ID used by EAD for this loanFalse
review_datadict containing additional data from the reviewFalse
import requests
import json
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# Example review data
payload = json.dumps({
"review_data": {
"sample": 1
},
"cu_score": "1.2",
"lca_score": "2",
"case_id": "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx",
"order_id": "xxxxxxxx-xxxx-Mxxx-Nxxx-yyyyyyyyyyyy",
"reggora_order_id": "62ab53800000000000000000",
"reggora_loan_id": "62aaaac00000000000000000",
"ucdp_document_id": "10000A0000",
"ead_document_id": "A000010000",
})
response = requests.post('https://sandbox.reggora.io/lender/loan/<loan_id>/review',
headers=headers, data=payload)

The response is a JSON object representing the new external review result. You will need to store the id for future requests to fetch the full object or upload documents.

{
"data": {
"id": "6193c4ad9681550007a795c7",
"source": "clear_collateral",
"created": "2021-11-16 14:48:13.578000",
"order_id": "62ab53800000000000000000"
},
"status": 201
}

This endpoint returns all external review data for the loan. Note that most of the optional params from the Create Review Result endpoint will be stored and returned as part of the review_data object.

GET https://sandbox.reggora.io/lender/loan/<loan_id>/review

ParameterDescription
loan_idstr ID of the Loan. Its external review results will be returned in the response.
import requests
import json
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.get('https://sandbox.reggora.io/lender/loan/<loan_id>/review',
headers=headers, data=payload)

The response is a list of the Loan’s external_review_results including links to download the uploaded documents.

{
"data": [
{
"id": "6193c4ad9681550007a795c7",
"source": "external",
"created": "2021-11-16 14:48:13.578000",
"review_data": {
"sample": 1,
"cu_score": "1.2",
"lca_score": "2",
"case_id": "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx",
"order_id": "xxxxxxxx-xxxx-Mxxx-Nxxx-yyyyyyyyyyyy",
"reggora_order_id": "62ab53800000000000000000",
"reggora_loan_id": "62aaaac00000000000000000",
"ucdp_document_id": "10000A0000",
"ead_document_id": "A000010000"
},
"order_id": "62ab53800000000000000000",
"result": "https://sandbox.reggora.io/lender/review-evault/6193c4ad9681550007a795c7/result",
"fha_ssr": "https://sandbox.reggora.io/lender/review-evault/6193c4ad9681550007a795c7/fha_ssr",
"fannie_ssr": "https://sandbox.reggora.io/lender/review-evault/6193c4ad9681550007a795c7/fannie_ssr",
"freddie_ssr": "https://sandbox.reggora.io/lender/review-evault/6193c4ad9681550007a795c7/freddie_ssr"
}
],
"status": 201
}

This endpoint uploads a document to the review object on a loan. Be careful that your request body is form-data with a single key “file” corresponding to the File you are uploading. We flexibly support any “document_type” though certain values may impact how the file will be handled.

POST https://sandbox.reggora.io/lender/review-evault/<review_id>/<document_type>

ParameterDescription
review_idID for the review object. Was returned in the response to the initial request to Create Review Result, and can also be obtained from the Get Review Result endpoint.
document_typestr name of the document being uploaded. All document types will be stored. There will be additional processing if the type is one of: “result”, “fannie_ssr”, “freddie_ssr”, or “ead_ssr”, so please use those values if they apply.

The request body must be form-data.

ParameterDescriptionRequired
fileThe file that you are uploading.True
import requests
import json
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# Example Uploading SSR from Fannie Mae
document_type = "fannie_ssr"
review_id = "6193c4ad9681550007a795c7"
files=[
('file',('<file_name>',open('<file_path>','rb'),'application/pdf'))
]
response = requests.post(f'https://sandbox.reggora.io/lender/review-evault/{review_id}/{document_type}',
headers=headers, data=payload, files=files)

The response is a JSON object representing the new review file.

{
"data": {
"document_id": "d74218e6-5788-11ec-9185-0242ac120002",
"document_name": "fannie_ssr.pdf",
"upload_datetime": "2021-12-07 18:09:38.024523"
},
"status": 201
}

This endpoint fetches an uploaded document from the review object on a loan.

GET https://sandbox.reggora.io/lender/review-evault/<review_id>/<document_type>

ParameterDescription
review_idID for the review object. Was returned in the response to the initial request to Create Review Result, and can also be obtained from the Get Review Result endpoint.
document_typeType of the document being fetched.
import requests
import json
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.get('https://sandbox.reggora.io/lender/review-evault/<review_id>/<document_type>',
headers=headers)

The above command returns a base64-encoded data stream of the extended Loan document’s requested review file.