Get personalized loan offers through Prosper –
/marketplace/application/offers API
offers API Overview
Use the POST /marketplace/application/offers/ method to send borrower information to Prosper for a set of loan offers.
If the borrower meets eligibility requirements based on the information you supplied, the response to this call will contain information about loan offers you can present to your user for acceptance.
The offers contain a partner referral code that will be part of all offer URLs. When the customer selects an offer, the URL will take them directly to the Prosper offer to accept the Terms and Conditions and view the Truth in Lending (TIL) statements. If the user completes a loan application, a loan listing will be created for investor funding of that loan.
Collecting loan applicant information for Prosper loan offers
To generate personalized loan offers for a user, Prosper requires 12 pieces of information about the loan applicant.
We’ll show you how to send this information to Prosper using the POST /marketplace/application/offers API a bit later, but this list will help you decide how to map out data collection within your web client.
The following user information is required to generate loan offers:
- Loan Amount
- Loan Purpose
- First Name
- Last Name
- Date of Birth (DOB)
- Street Address
- City
- State
- Zip code
- Employment Status
- Annual Income
To speed up the creation of a loan listing, Prosper can also accept additional information about the loan applicant:
- Self reported credit score
- Primary phone number
- Secondary phone number
- Employer name
- Employer phone number
- Work phone number
- Employer start date
- Occupation type
- Social security number
- Bank account number
- Bank routing number
Whether you want to collect this additional information from your client, or let Prosper collect the information once an offer is accepted and a Prosper account is created is up to you. Even if you have a small subset of this information, it may help to pass it to Prosper to speed the loan application and listing creation process.
Supported methods
POST
Example URI
POST <prosper_base_address>/marketplace/application/offers/ Authorization: bearer <access_token> Accept: application/json <JSON POST BODY>
HTTP Headers
Field name | Expected value | Required? |
---|---|---|
Authorization | bearer <access_token> | Y |
Accept | application/json | Y |
timezone | By default, all dates returned in the response are in UTC format.
However, you can specify the timezone in full format. Examples: |
N |
Offers request JSON elements
The following tables describe the objects and elements within the JSON body of an offers API POST method call.
JSON objects within the offers POST body
An offers request contains seven JSON objects. Six of the objects within the request have required elements, so the request must have those JSON objects. However, not every element within each required object is required.
Name | Type | Required? | Description |
---|---|---|---|
loan_info | JSON object | Y | Loan request JSON object, containing the following elements:
|
identification | JSON object | Y | Client and partner identification JSON object, containing the following elements:
|
personal_info | JSON object | Y | Borrower personal information JSON object, containing the following elements:
|
address_info | JSON object | Y | Borrower home address information JSON object, containing the following elements:
|
contact_info | JSON object | Y | Borrower contact information JSON object, containing the following elements:
|
employment_info | JSON object | Y | Borrower employment information JSON object, containing the following elements:
|
bank_account_info | JSON object | N | Borrower bank account information JSON object, containing the following elements:
|
Elements within the “loan_info” JSON object (required object)
Name | Type | Required? | Description |
---|---|---|---|
loan_purpose_id | integer | Y | The purpose of the loan request. Accepted Values:
|
loan_amount | decimal | Y | A decimal value indicating the amount of the loan request. Do not pass in currency symbols, or commas in the value. Minimum amount 2000.00 and maximum amount 35000.00. Examples:
|
self_reported_credit_score | integer | N | The credit score of the applicant. Acceptable Values:
|
Elements within the “identification” JSON object (required object)
Name | Type | Required? | Description |
---|---|---|---|
client_reference_id | string | N | String the partner client can provide as pass-through information to identify marketing channel, source or campaign related to the transaction. Prosper will pass this response back to allow the partner client to make appropriate attribution and complete the transaction. This field must be a non-unique channel identifier.
Note: Maximum length of this string is 255 characters. |
partner_source_code | string | Y | Unique string provided by Prosper that identifies the partner for referral purposes. |
Elements within the “personal_info” JSON object (required object)
Name | Type | Required? | Description |
---|---|---|---|
first_name | string | Y | The borrower’s first name. |
last_name | string | Y | The borrower’s last name. |
middle_initial | string | N | The borrower’s middle initial in unicode. |
suffix | string | N | The borrower’s suffix. Can be one of the following values.
|
date_of_birth | string | Y | Format: MM/dd/yyyy
Example:01/01/1979 |
ssn | string | N | The borrower’s Social Security Number Format:666720553 |
Elements within the “address_info” JSON object (required object)
Name | Type | Required? | Description |
---|---|---|---|
street | string | Y | Address, including apartment number (if applicable) and street where borrower resides.
Note: PO Box addresses are not allowed. Example:6451 Wishbone Ter |
city | string | Y | City where borrower resides. |
state | string | Y | State where borrower resides, in two-letter U.S. Postal Service code abbreviation. Example:MD |
zip_code | string | Y | Standard 5 digit or 5+4 U.S. Postal Service zipcode where borrower resides. Examples:
|
Elements within the “contact_info” JSON object (required object)
Name | Type | Required? | Description |
---|---|---|---|
string | Y | The borrower’s email, in a valid email format. Example:[email protected] |
|
home_phone | JSON object | N | An object with two elements that comprise a phone number:
|
mobile_phone | JSON object | N | An object with two elements that comprise a phone number:
|
work_phone | JSON object | N | An object with two elements that comprise a phone number:
|
Elements within the “employment_info” JSON object (required object)
Name | Type | Required? | Description |
---|---|---|---|
employer_name | string | N | The name of the borrower’s employer. |
employer_phone | JSON object | N | An object with two elements that comprise a phone number:
|
employment_month | integer | N | Two-digit number representing the month current employment began.
|
employment_year | integer | N | Four-digit number representing the year current employment began. Example: 1999 |
employment_status_id | integer | Y | Integer matching borrower’s employment status from the list below.
|
occupation_id | integer | N | Integer matching borrower’s occupation, from the list below:
|
annual_income | decimal | Y | Reported annual gross income. Annual income will later be verified by Prosper during the verification process. Example: 95000 |
is_income_verifiable | boolean | N | A Boolean value that signifies if the annual income has been verified. Example: true | false (This element has been deprecated.) |
Elements within the “bank_account_info” JSON object (optional object)
Name | Type | Required? | Description |
---|---|---|---|
bank_name | string | N | The name of the bank where the loan will be deposited and where the monthly loan payments will be withdrawn. |
first_account_holder_name | string | N | The account holder’s name as it appears for the account. |
account_number | integer | N | The account number. Example: 122345547 |
routing_number | integer | N | The routing number for processing payments. Example: 113024520 |
Offers Response
The following tables describe the elements within the offers response you will receive from a successful POST method call.
offers response elements
Name | Type | Description |
---|---|---|
referral_code | string | A unique code assigned to this offer response. This referral code is part of each offer URL in the response, and allows Prosper to create (and track) the set of offers associated with each offer request. |
offers_url | string | The direct link a Prosper page with the set of offers in this response. |
identification | object | An object containing the client application id and partner source code that uniquely identifies the partner client making the request.
|
offers | array of offer objects | An array of individual offers that you can display to the user. The offers object elements are described in the next table. |
offers object elements
Name | Type | Description |
---|---|---|
id | integer | A unique id for this loan offer. |
apr | decimal | The annual percentage rate of the loan, expressed as a decimal. |
loan_amount | integer | The total amount of the loan, including origination fees. |
loan_rate | decimal | The interested rate charged for the loan. |
loan_term_in_months | integer | The length, in months, or the loan repayment. Possible values:
|
loan_term_in_years | integer | The length, in years, or the loan repayment. Possible values:
|
monthly_payment | decimal | The total amount of each monthly loan payment. |
offer_url | string | Direct link to the Prosper offer. |
Example
Retrieving loan offers from Prosper:
The following example passes borrower information to Prosper for a set of loan offers:
Request Header:
POST <prosper_base_address>/marketplace/application/offers/ Authorization: bearer <access_token> Accept: application/json
JSON Request Body:
{ "loan_info" : { "loan_purpose_id": 15, "loan_amount": 12000, "self_reported_credit_score": 1 }, "identification": { "client_reference_id":"APP101", "partner_source_code": "THSYU87-HTNSS43-HJTUS98" }, "personal_info": { "first_name": "Carolyn", "last_name": "Brace", "middle_initial": "", "suffix": "", "date_of_birth": "01/01/1979", "ssn": "666720553" }, "address_info": { "street": "3039 CANAL WALK RD", "city": "HENDERSON", "state": "NV", "zip_code": "89052" }, "contact_info": { "email": "[email protected]", "home_phone": { "area_code": "206", "phone_number": "66118881" }, "mobile_phone": { "area_code": "206", "phone_number": "7487484" }, "work_phone": { "area_code": "216", "phone_number": "7569484" } }, "employment_info": { "employer_name": "ABC Com", "employer_phone": { "area_code": "801", "phone_number": "7484944" }, "employment_month": 3, "employment_year": 1999, "employment_status_id": 7, "occupation_id": 17, "annual_income": 120000 }, "bank_account_info": { "bank_name": "Test Bank", "first_account_holder_name": "Carolyn Brace", "account_number": 122345547, "routing_number": 113024520 } }
Response:
The response to the above call will provide a referral code that will be part of all offer URLs, a set of loan offers you can present to the user (if the borrower is approved for an offer), and URLs that will take your user directly to accept the Prosper loan offers.
{ "referral_code": "5e8f54e3-6b54-428e-b1b5-d42", "offers_url":"<Prosper_offer_url_that_shows_all_offers>", "identification": { "client_reference_id":"APP101", "partner_source_code": “THSYU87-HTNSS43-HJTUS98” }, "offers": [ { "id": 309003, "apr": 0.0749, "loan_amount": 2000, "loan_rate": 0.0613, "loan_term_in_months": 36, "loan_term_in_years": 3, "origination_fee":4500, "monthly_payment": 60.96, "offer_url": "<Prosper_offer_url_specific_to_this_offer>" }, { "id": 309004, "apr": 0.1052, "loan_amount": 2000, "loan_rate": 0.0832, "loan_term_in_months": 60, "loan_term_in_years": 5, "monthly_payment": 40.86, "offer_url": "<Prosper_offer_url_specific_to_this_offer>" } ], "errors": [ // Populated when validation has failed or offers are not generated per Prosper rules { "code": "", "message": "" } ] } }
Example error response:
The following error message would be returned for a request body that did not include a loan_amount or a personal_info object.
{ "errors": [ { "code": "MKTPL-1012", "message": "The applicant's data was missing or not formatted correctly." "assertions": [ { "code": "MKTPL-1012-101", "message": "Loan amount is null or empty, and is required to generate an offer." }, { "code": "MKTPL-1012-131", "message": "Name is null or empty, and is required to generate an offer." } ] } ] }
Offers API Error Codes
Main error codes
Error Code | HTTP Status Code | Message |
---|---|---|
MKTPL-100 | 200 | Pre-existing customer. |
MKTPL-1001 | 401 | The partner source code is missing. |
MKTPL-1004 | 401 | Unauthorized access, the submitted partner source code is invalid (either expired or incorrect). |
MKTPL-1006 | 200 | The applicant does not meet the minimum age requirement. |
MKTPL-1007 | 200 | Prosper does not conduct business in the state where the applicant resides. |
MKTPL-1008 | 200 | The amount requested exceeds Prosper’s limits for the state where the applicant resides. |
MKTPL-1009 | 200 | Based on the information presented, Prosper could not find any matching offers. |
MKTPL-1012 | 200 | The applicant’s data was not formatted correctly.
Errors with this error code will contain an assertions object with one or more code and error message objects, letting you know what data was not formatted correctly. |
MKTPL-1012 SubErrorCodes
All errors of type MKTPL-1012 will have an assertion with a SubErrorCode and error message. The following table contains the list of SubErrorCode and message assertions.
Error Code | HTTP Status Code | Message |
---|---|---|
MKTPL-1012-101 | 200 | Loan amount is null or empty, and is required to generate an offer. |
MKTPL-1012-102 | 200 | Loan amount [decimal] ({0}) is not a valid format. |
MKTPL-1012-103 | 200 | Requested loan amount ({0}) is less than the Prosper minimum (2000). |
MKTPL-1012-104 | 200 | Requested loan amount ({0}) is greater than the Prosper maximum (35000). |
MKTPL-1012-111 | 200 | Loan purpose id is null or empty, and is required to generate an offer. |
MKTPL-1012-112 | 200 | Loan purpose id must be an integer value: {0}. Refer to the documentation for acceptable values. |
MKTPL-1012-121 | 200 | Self reported credit score is null or empty, and is required to generate an offer. |
MKTPL-1012-122 | 200 | Self reported credit score must be an integer value: {0}. Refer to the documentation for acceptable values. |
MKTPL-1012-123 | 200 | Self reported credit score is not a valid value: {0}. Refer to the documentation for acceptable values. |
MKTPL-1012-112 | 200 | Loan purpose id is not a valid value: {0}. Refer to the documentation for acceptable values. |
MKTPL-1012-131 | 200 | Name is null or empty, and is required to generate an offer. |
MKTPL-1012-141 | 200 | First name is null or empty, and is required to generate an offer. |
MKTPL-1012-142 | 200 | Name is null or empty, and is required to generate an offer. |
MKTPL-1012-151 | 200 | Last name is null or empty, and is required to generate an offer. |
MKTPL-1012-152 | 200 | Last name ({0}), is not a valid format. |
MKTPL-1012-161 | 200 | Middle initial can only contain a single-letter character ({0}), not a valid format. |
MKTPL-1012-171 | 200 | Date of birth is null or empty, and is required to generate an offer. |
MKTPL-1012-172 | 200 | Date of birth is not a date value: {0}. Please use “MM/dd/yyyy” or “MM-dd-yyyy”. |
MKTPL-1012-173 | 200 | The applicant does not meet the minimum age requirement. |
MKTPL-1012-181 | 200 | Enter a valid 9 digit social security number. |
MKTPL-1012-191 | 200 | Address is null or empty, and is required to generate an offer. |
MKTPL-1012-201 | 200 | Street is null or empty, and is required to generate an offer. |
MKTPL-1012-202 | 200 | Applicant’s address can not contain a PO Box. |
MKTPL-1012-211 | 200 | City is null or empty, and is required to generate an offer. |
MKTPL-1012-221 | 200 | State is null or empty, and is required to generate an offer. The state must be a two character code. |
MKTPL-1012-222 | 200 | State contains invalid characters, and is required to generate an offer. The state must be a two character code. |
MKTPL-1012-231 | 200 | Zipcode is null or empty, and is required to generate an offer. |
MKTPL-1012-232 | 200 | Zipcode format is not valid, and is required to generate an offer. Prosper accepts a 5 digit or 5 + 4 zipcode format. |
MKTPL-1012-242 | 200 | Email address is null or empty, and is required to generate an offer. |
MKTPL-1012-243 | 200 | Applicant’s email address is not in a valid format. |
MKTPL-1012-261 | 200 | Employment month contains invalid characters, and is required to generate an offer. |
MKTPL-1012-271 | 200 | Employment year contains invalid characters, and is required to generate an offer. |
MKTPL-1012-281 | 200 | Employment status id is null or empty, and is required to generate an offer. |
MKTPL-1012-282 | 200 | Employment status id must be a valid integer value (Self-employed = 3; Not employed = 5; Other = 6; Employed = 7): {0}. |
MKTPL-1012-291 | 200 | Yearly income is null or empty, and is required to generate an offer. |
MKTPL-1012-292 | 200 | Yearly income [decimal] ({0}) is not a valid format. |
MKTPL-1012-293 | 200 | Yearly income amount ({0}) exceeds the Prosper maximum amount. |
Contact us
Do you have any questions, comments for us, or problems integrating the offers API into your website?
Contact us at [email protected].