# API Specifications

## Authentication

Engine by MoneyLion will provide testing and production API bearer tokens. All requests to the Engine by MoneyLion 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:

```
Authorization: Bearer 0a930e7f-4a96-4388-8c12-c901a161084e_409cc5f2-4008-11aa-84a4-0b68f163f437
```

## Post Request

The required format of the body (JSON) in the request to `https://api.engine.tech/leads/rateTables`:

```json
{
  "productTypes": [
    "savings"
  ],
  "personalInformation": {
    "zipcode": "10010"
  },
  "savingsInformation": {
    "minDepositAmount": 1000
  },
  "clientTags": {
    "tag.sv": [
      "facebook_campaign"
    ]
  }
}
```

More information about key/value pair formatting and acceptable fields can be found [here](https://evenfinancial.com/docs/api-reference/#schemas).

## Response

Here is a [sample response of /rateTables](https://evenfinancial.com/docs/api-reference/#get-rate-table)

Savings offers will appear [in this schema](https://evenfinancial.com/docs/api-reference/#tocS_SavingsOffer)

```json
{
  ...,
  "savingsOffers": [
    {
      "uuid": "11111111-ae64-4bd5-8614-9119bab84e45",
      "partner": {
        "uuid": "00000000-4c51-4ade-b165-6f8218b06ac8",
        "name": "Sample Bank Brand Name",
        "description": "Sample Savings",
        "disclaimer": "None",
        "supportsPersonalizedOffers": false,
        "supportsPreSelect": false,
        "shouldDisplayPreSelect": false,
        "imageUrl": "https://www.sampleurl.com/content/125x70/img.png"
      },
      "marketplace": {
        "uuid": "22222222-c920-4c5e-966d-c8dc8cd4335f",
        "name": "LT",
        "description": "Description",
        "disclaimer": "Disclaimer",
        "supportsPersonalizedOffers": false,
        "supportsPreSelect": false,
        "shouldDisplayPreSelect": false,
        "imageUrl": "https://s3.amazonaws.com/test.png"
      },
      "productType": "savings",
      "productSubType": "savings_account",
      "url": "https://offers.engine.tech/ref/021d6704-dbd1-48f6-8677-9cdea4eea990",
      "details": {
        "name": "360 Performance Savings",
        "description": "<ul>\n<li>Access your money easily with Bill Pay</li>\n<li>Easy Opening</li>\n<li>No Monthly Service Fees</li>\n</ul>",
        "annualPercentYield": 2.1,
        "compoundingMethod": "monthly",
        "minimumDeposit": 0,
        "monthlyFee": 0,
        "checkWriting": false,
        "federalInsuranceType": "fdic",
        "effectiveAsOf": "2022-08-30T14:34:29.477165Z"
      },
      "expiresAt": "2022-08-30T16:34:29.477165Z"
    }
  ]
}
```

Below are the fields used for displaying offers:

| **Field Description**   | **API Field Name**           | **Example Response**                                                                            | **Notes**                                                                                                          |
| ----------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Bank Brand Name         | partner.name                 | Citi Bank                                                                                       | <p><br></p>                                                                                                        |
| FDIC, NCUA status       | details.federalInsuranceType | FDIC or NCUA or Null                                                                            | If null, recommended to not display                                                                                |
| Product Name            | details.name                 | 360 Performance Savings                                                                         | <p><br></p>                                                                                                        |
| Bank Logo               | partner.imageUrl             | <https://s3.amazonaws.com/images.engine.tech/logos/prod/lt\\_-\\_enablement\\_api-v2isl9ak.png> | <p><br></p>                                                                                                        |
| APY                     | details.annualPercentYield   | 1.50                                                                                            | String ‘Annual Percentage Yield’ (can’t shorten to APY) must be displayed and number must be shown as a percentage |
| Monthly Fee Amount      | details.monthlyFee           | 0                                                                                               | Dollar value to be accompanied by the string ‘Monthly fee’                                                         |
| Check Writing Status    | details.checkWriting         | True                                                                                            | Status to be accompanied by the string ‘Check writing’’                                                            |
| Min Balance to Earn APY | details.minimumDeposit       | 2500                                                                                            | Dollar value to be accompanied by the string ‘Min balance to earn APY’                                             |
| Marketing Details       | details.description          | \<ul>\n\<li>Lorem\</li>\n\<li>impsum\</li>\</ul>                                                | Bulleted list of account values that are returned by the Financial Institutions                                    |
| As of Date              | details.effectiveAsOf        | 2022-08-26T13:14:41.396113Z                                                                     | Must be posted on each card                                                                                        |

Other Important Fields:

| **Field Description**                            | **API Field Name** | **Example Response**                                                  | **Notes**                                                         |
| ------------------------------------------------ | ------------------ | --------------------------------------------------------------------- | ----------------------------------------------------------------- |
| Savings, or Money Market Offer or CD Designation | productSubType     | savings\_account OR money\_market\_account OR certificate-of-deposit  | We will be adding support for Checking and CDs in future upgrades |
| Offer Expiration Date/Time                       | expiresAt          | 2022-10-03T16:48:03.504061Z                                           | Offers should not be cached. Offers expire after this timestamp   |
| Offer Click URL                                  | url                | <https://offers.engine.tech/ref/864a7925-4abd-42b3-b5a6-68960209e327> | The user should be sent here based on click of the account card   |

## Asynchronous Flow Responses

Asynchronous Flow - <https://api.engine.tech/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 recommended endpoint given the partner’s flexibility to retrieve offers from a separate endpoint.

In the asynchronous flow, creating a rate table does not wait for all of our partners to respond with offers, instead, it contains an array of pending responses ({.pendingResponses}), as well as any resolved offers. You may poll the endpoint using the resulting ID to check for additional offers.

* **“uuid”:** Engine by MoneyLion’s Rate Table UUID which will be used to retrieve offer information
* **“leadUuid”:** Engine by MoneyLion’s Lead UUID which partners building a Native API integration should store for internal records

Here is an example of the API response. Note that `pendingResponses` contains information about the Financial Services partners to whom Engine by MoneyLion is sending user information:

```json
{
  "uuid": "37d88231-8e0b-473f-a73e-6f6565b62389",
  "leadUuid": "d6d87f85-de69-4651-9adc-77917d546333",
  "creditCardOffers": [],
  "lifeInsuranceOffers": [],
  "lineOfCreditOffers": [],
  "loanOffers": [],
  "mortgageOffers": [],
  "savingsOffers": [],
  "specialOffers": [],
  "pendingOriginators": [],
  "pendingResponses": [
    {
      "partner": {
        "uuid": "9a3346bd-760e-42a6-94bf-16b8a9374223",
        "name": "Sample Bank Name",
        "description": "description",
        "disclaimer": "description",
        "supportsPersonalizedOffers": false,
        "supportsPreSelect": false,
        "shouldDisplayPreSelect": true,
        "imageUrl": "https://www.depositaccounts.com/content/spnsr/125x70/sample-bank-name-bank.png"
      },
      "productTypes": ["savings"]
    }
  ]
}
```

In the Asynchronous Flow, partners building a Native API integration must make a secondary request to Engine by MoneyLion’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 by MoneyLion’s Offers Endpoint – `https://api.engine.tech/originator/rateTables/{uuid}`

Poll the endpoint once every second up to 15 seconds, or until “pendingResponses” is empty

Below is an example of the API response for Engine by MoneyLion’s Offers endpoint. Note that `pendingResponses` is empty as Engine by MoneyLion has already received offers back for the user from all Financial Services partners.

```json
{
  ...,
  "savingsOffers": [
    {
      "uuid": "00000000-ae64-4bd5-8614-9119bab84e45",
      "partner": {
        "uuid": "11111111-4c51-4ade-b165-6f8218b06ac8",
        "name": "Sample Bank Brand Name",
        "description": "Sample Savings",
        "disclaimer": "None",
        "supportsPersonalizedOffers": false,
        "supportsPreSelect": false,
        "shouldDisplayPreSelect": false,
        "imageUrl": "https://www.sampleurl.com/content/125x70/img.png"
      },
      "marketplace": {
        "uuid": "22222222-c920-4c5e-966d-c8dc8cd4335f",
        "name": "LT",
        "description": "Description",
        "disclaimer": "Disclaimer",
        "supportsPersonalizedOffers": false,
        "supportsPreSelect": false,
        "shouldDisplayPreSelect": false,
        "imageUrl": "https://s3.amazonaws.com/test.png"
      },
      "productType": "savings",
      "productSubType": "savings_account",
      "url": "https://offers.engine.tech/ref/d0000000-dbd1-48f6-8677-9cdea4eea990",
      "details": {
        "name": "360 Performance Savings",
        "description": "<ul>\n<li>Access your money easily with Bill Pay</li>\n<li>Easy Opening</li>\n<li>No Monthly Service Fees</li>\n</ul>",
        "annualPercentYield": 2.1,
        "compoundingMethod": "monthly",
        "minimumDeposit": 0,
        "monthlyFee": 0,
        "checkWriting": false,
        "federalInsuranceType": "fdic",
        "effectiveAsOf": "2022-08-30T14:34:29.477165Z"
      },
      "expiresAt": "2022-08-30T16:34:29.477165Z"
    }
  ]
}
```

## Synchronous Flow

If you’d like details on supporting a synchronous flow, please contact your Engine by MoneyLion Partner Manager or <partnersupport@engine.tech> for help.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://even-financial.gitbook.io/developer-center/native-api-integrations/savings/api-specifications.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
