API Specifications
Post Request
This section covers how user information is sent via requests to Engine by MoneyLion's API.
Post Request Endpoints
Engine has two endpoints available to receive requests with user.
(Recommended) Asynchronous Flow
Endpoint: https://api.evenfinancial.com/leads/rateTables Partners building a Native API integration posting user information to this endpoint will need to make a separate request to retrieve offers. This is the more frequently utilized endpoint given the partner’s flexibility to retrieve offers from a separate endpoint.
Synchronous Flow
Endpoint: https://integrations.evenfinancial.com/blocking/leads/rateTables Partners building a Native API integration will receive offers back from Engine’s API after posting user information to this endpoint. Engine’s API will only respond when all financial institution responses have been resolved and as a result, the latency will be higher than the Asynchronous Flow endpoint.
Post Request Authorization
Engine will provide testing and production API access tokens. All requests to the Engine API must be authenticated using a bearer token specified in the Authorization header.
The header value is prefixed with the string “Bearer “, so a properly-authenticated request will look similar to the one here:
Post Request Body - Object Structure
The required format of the body (JSON) in the request to Engine by MoneyLion's API is as follows:
More information about key/value pair formatting and acceptable fields can be found in Engine by Moneylions API Reference (schemas).
productTypes array: "loan" and "other"
In the productTypes
array, you may pass ["loan"]
(to receive First Look / Personal Loan offers only), ["other"]
(to receive Second Look Marketplace offers only), or ["loan", "other"]
if you want your leads to eligible for First Look offers when eligible, or else Second Look offers (if no First Look offers are received).
See 2nd Look Marketplace (Channel Partners) for more info.
Response
This section covers how partners building a Native API integration retrieve offers from Engine by MoneyLion's API.
Asynchronous & Synchronous Flow Responses
The method to retrieve offers from Engine by MoneyLion's API and response latency differ depending on which Post Request Endpoint was utilized.
Asynchronous Flow
Partners building a Native API integration will receive a response from Engine’s API almost instantaneously. This response does not contain complete offer information and contains two key fields to retrieve offer information:
“uuid”: Engine’s Rate Table UUID which will be used to retrieve offer information
“leadUuid”: Engine’s Lead UUID which partners building a Native API integration should store for internal records
Here is an example of the API response for the Asynchronous flow endpoint. Note that “pendingResponses” contains information about the Financial Services partners to whom Engine is sending user information.
In the Asynchronous Flow, partners building a Native API integration must make a secondary request to Even’s API to retrieve offer information. Below are instructions for this secondary request:
Capture the “uuid” returned in the initial API response
Execute a GET request to Engine’s Offers Endpoint – Link
Poll the endpoint once every second up to 15 seconds or until “pendingResponses” is empty
Below is a mock of the API response for Even’s Offers endpoint. Note that “pendingResponses” is empty as Even has already received offers back for the user from all Financial Services partners.
Synchronous Flow
Partners building a Native API integration will receive a response from Engine’s API with more latency than the Asynchronous flow, however the response will contain complete offer information.
Below is a mock of the API response for the Synchronous flow endpoint. Note that “pendingResponses” is empty as Engine has already received offers back for the user from all Financial Services partners.
Response Parsing
loanOffers array
Offers will be returned in the loanOffers
array, and only that array should be used to display loan offers (aka 1st Look offers).
Rate tables with loanOffers present may also contain offers in the specialOffers array, for example:
specialOffers
returned in rate tables that also contain loanOffers
are static 2nd Look (i.e. non-loan) offers that are unlikely to be a match for the applicant requesting a loan, and should be ignored.
You should write your display logic such that:
If
loanOffers
is present and non-empty, display all loan offers.If loanOffers is empty, display
specialOffers.
Leads posted with productTypes: ["loan", "other"]
will always get either loanOffers
or specialOffers
in the resulting rate table.
Response field mapping
Below is the mapping of the required fields for the offer display page to the fields present in the “loanOffers” section of the API response:
Key
Value
Financial Services Partner Logo
originator.images.url
Offer Amount
maxAmount
Offer Term Length
termLength
Offer Term Unit
termUnit
Offer Term Description
termDescription
Offer APR Amount (%)
maxApr
Offer APR Description
aprDescription
Offer Monthly Payment Amount
maxMonthlyPayment
Offer Monthly Payment Description
monthlyPaymentDescription
• If “preApproved” is “true”
• If “preQualified” is “true”
• If both “preApproved” & “preQualified” are “true”
• Pre-Approved
• Pre-Qualified
• Pre-Approved
Offer Disclaimer
originator.disclaimer
For the additional fields required for Secured Loans or Line of Credit products:
Key
Value
Product Type Label
productSubType
Product Type Disclaimer
productSubTypeDisclaimer
Errors
Response types are mapped to HTTP status codes. In particular:
200 OK: when data is successfully returned for a GET request
201 Created: when new data is submitted to via a POST
400 Bad Request: the submitted data is malformed
401 Unauthorized: when the Authorization header is missing, if the value is invalid, or if the corresponding access token lacks the required scopes to complete the request
404 Not Found: the URL is invalid, or the resource ID reference in the URL does not exist
422 Unprocessable Entity: the submitted data is properly formatted, but invalid according to business logic (some legacy endpoints use 409 Conflict in this case)
5xx: server error
Minor version changes to the API are guaranteed to be backwards compatible. Major version changes may break the API, but legacy versions are supported indefinitely.
Last updated