Even Financial Lead API

A lead combines information about a user with search criteria for financial products, and is submitted in exchange for a rate table. A rate table is a list of financial offers that match a submitted lead. ### Lead Details No fields are required on a lead, but depending on the type of product requested, a minimum subset is required in order to potentially receive personalized offers. For details, see [the Financial Products overview](https://engine.tech/docs/api-reference/#financial-products). A lead may request multiple product types, in which case the returned rate table will include a list for each product type with matching offers. ### Asynchronous Rate Tables Often a rate table will be built asynchronously. This means that although the rate table gets returned, the API may still be waiting for responses from one or more financial institutions. In these cases, you should poll the rate table until all responses are resolved before displaying the offers to the end user. So, if you submit a lead via the "Submit lead" endpoint and the returned rate table has a non-empty `pendingResponses` array, you should reload the rate table via the "Get rate table" endpoint, and continue to do so until `pendingResponses` is empty.

Operations 5

POST /leads/rateTables Submit lead #
POST /leads/{leadUuid}/rateTables Submit a lead and get a rate table #
GET /originator/rateTables/{uuid} Get rate table #
GET /leads/{uuid} Get lead #
PATCH /leads/{uuid} Update a lead #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/even-financial-lead-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

even-financial-lead-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Engine by MoneyLion Analytics Lead API
  version: 1.106.0
  termsOfService: https://engine.tech/about/legal#terms
  contact:
    name: API Support
    url: https://engine.tech/docs
    email: help@engine.tech
  description: "### Introduction\n\nWelcome to Engine by MoneyLion's Integration Guide for our Supply Analytics data product, which provides funnel, payout and client tag data on specific leads and lead segments to better improve your monetization, consumer  experience and efficiency of user acquisition.\n\nRefer to [Developer Center](https://engine.tech/developer-center/loans-savings-second-look-marketplace/reporting-options-for-channel-partners/channel-partner-reporting-analytics-api-1) for detailed information on how to use this API.\n\nSupply Analytics offers three different reporting endpoints optimized for streaming time series datasets out of the Engine by MoneyLion API and into your system via periodic polling, as well as an endpoint to obtain a snapshot of all information regarding a single lead. This document contains everything needed to understand and integrate with all 4 endpoints offered.\n### API Versions\nThis document describes version 3 of the Supply Analytics API. The previous version available to partners is referred to as version 1. Version 2 was an internal release.\nAll HTTP requests for this version must include header `API-Version: 2025-04-01`.\n\n### API Endpoints\n\nWe currently offer the following reporting endpoints providing real time insights into the funnel from user acquisition through conversion:\n\n1. LeadEvents: This endpoint tracks the lead funnel’s journey. With the Lead Events API, you can pull KPI related data for your funnel, measure conversions, and iterate so that you can meet your business goals.\n\n2. LeadPayouts: This endpoint tracks payout by conversion on a per-lead basis.\n\n3. LeadClientTags: This endpoint is used to check and confirm which client tags (ie. subID, clickID, or trafficsource) you have appended to each lead (unique Engine by MoneyLion generated leadUuid). It provides better customer segmentation and attribution by returning your supplied client-tags (key/value) pairs associated with a lead. It's explained with examples in depth in the \"Get  lead client tags endpoint\" section.\n\nThe above endpoints can be used to stream information into your system and will be referred to as streaming endpoints. Additionally, we have the following endpoint to access an on-demand snapshot of lead information:\n\n4. LeadsInfo: This endpoint provides a combined snapshot of information about a single lead — all of its events, payouts and client tags in a single request.\n\n### Basic Request to Supply Analytics API\n\nEvery request to the Supply Analytics API streaming endpoints will return a JSON object with the following properties:\n\n- `data` is the array of objects that should be analyzed / loaded into your\n  database.\n\n- `nextUrl` is the URL that should be persisted and used for the next\n  request. It will include a `paginationToken`.\n\n- `shouldContinuePolling` is a boolean which signals if calling `nextUrl`\n  will have published data available.\n\n- `paginationToken` is an opaque cursor that identifies the end of the\n  current page and is used for the next request. It is already included in\n  `nextUrl` and also provided separately for convenience.\n\n\nEvents from financial institutions or other external systems may not be shared with Engine by MoneyLion for hours or days after they occur; using `paginationToken` ensures that backfilled records are not missed.\n\nA response contains all available data subject to the response size limit and any applied filters (such as `untilTimestamp`). Requesting a URL with a `sinceTimestamp` that is less than five minutes old will return an error, as it can take a few minutes to prepare the response. We suggest polling hourly as a starting point, but as long as you follow shouldContinuePolling, you can poll at any interval (>5 minutes). For convenience, we provide a `shouldContinuePolling` flag to indicate whether you should continue to poll the Supply Analytics endpoint. If `true`, continue with the `nextUrl`. If not, no further data is currently available.\n``` curl -X GET \\\n  'https://api.engine.tech/supplyAnalytics/leadEvents?sinceTimestamp=2019-08-24T14%3A15%3A22Z' \\\n  -H 'Accept: application/json' \\\n  -H 'Authorization: Bearer {access-token}' \\\n  -H 'API-Version: 2025-04-01'\n```\nSince `paginationToken` is initially not known, the initial request may specify the `sinceTimestamp` parameter. In the absence of both of them, the endpoint will start with the oldest record in the system. The `nextUrl` from response will only include `paginationToken`.\n### Developer's Note About Time Zones\nTimestamps without an explicit timezone (timezones missing a suffix of `Z`, for example) are interpreted as UTC. However, we recommend passing an explicit timezone offset of Z in the timestamp query string parameter. All timestamps in responses, whether in the event as a field, or in the `nextUrl`, are UTC.\n### Developer's Note About Flexible JSON Objects\nEngine by MoneyLion's goal is to enrich the data provided by the Supply Analytics endpoint over time to improve your insight and analytical abilities. Therefore, it is recommended that any integration or initial setup be created with the future possibility of additional data fields in mind. These will take the form of additional JSON keys. We'd recommend that your integration remain compatible if there are additional JSON key-values present. This will allow new rollouts and improvements to the supply analytics endpoint to happen as smoothly as possible.\n### Backfilling\nWhen backfilling, the `sinceTimestamp` of your initial request URL should be to your starting point. You should request each subsequent URL in succession until you're caught up. You can use `untilTimestamp` to define the end time of backfill windows.\n\n### Resources\nPartners can contact their assigned Engine by MoneyLion Partner Manager or partnersupport@engine.tech for help.\n"
servers:
- url: https://api.engine.tech
tags:
- name: Lead
  description: 'A lead combines information about a user with search criteria for financial products, and is submitted in exchange for a rate table.


    A rate table is a list of financial offers that match a submitted lead.


    ### Lead Details


    No fields are required on a lead, but depending on the type of product requested, a minimum subset is required in order to potentially receive personalized offers. For details, see [the Financial Products overview](https://engine.tech/docs/api-reference/#financial-products).


    A lead may request multiple product types, in which case the returned rate table will include a list for each product type with matching offers.


    ### Asynchronous Rate Tables


    Often a rate table will be built asynchronously. This means that although the rate table gets returned, the API may still be waiting for responses from one or more financial institutions. In these cases, you should poll the rate table until all responses are resolved before displaying the offers to the end user.


    So, if you submit a lead via the "Submit lead" endpoint and the returned rate table has a non-empty `pendingResponses` array, you should reload the rate table via the "Get rate table" endpoint, and continue to do so until `pendingResponses` is empty.

    '
paths:
  /leads/rateTables:
    post:
      x-implemented-by:
        service: lead
        path: /leads/rateTables
      summary: Submit lead
      description: Submit a lead and get a rate table. If the rate table has a non-empty `pendingResponses` array, reload it via the "Get rate table" endpoint. For more details see [the Lead overview](https://engine.tech/docs/api-reference/#even-financial-api-lead).
      operationId: submitLead
      security:
      - publishableBearerToken: []
      tags:
      - Lead
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeadCreateData'
            examples:
              loanLeadCreateData:
                $ref: '#/components/examples/LoanLeadCreateData'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateTable'
              examples:
                pendingLoanRateTable:
                  $ref: '#/components/examples/PendingLoanRateTable'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
              examples:
                invalidSsn:
                  $ref: '#/components/examples/InvalidSsn'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
        '409':
          description: Duplicate lead
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
              examples:
                duplicateLead:
                  $ref: '#/components/examples/DuplicateLead'
  /leads/{leadUuid}/rateTables:
    parameters:
    - name: leadUuid
      in: path
      required: true
      description: The UUID of the lead we want to create a rate table for.
      schema:
        type: string
        format: uuid
    post:
      summary: Submit a lead and get a rate table
      operationId: getRateTableForSpecifiedLead
      security:
      - publishableBearerToken: []
      tags:
      - Lead
      requestBody:
        description: A Lead object
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeadCreateData'
      responses:
        '200':
          description: The generated `RateTable`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateTable'
              examples:
                pendingLoanRateTable:
                  $ref: '#/components/examples/PendingLoanRateTable'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
  /originator/rateTables/{uuid}:
    parameters:
    - name: uuid
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      x-implemented-by:
        service: originator
        path: /rateTables/{uuid}
      summary: Get rate table
      description: 'Get the rate table for a specified UUID. If the UUID is unkown, a `404 Not Found` response will be returned.


        Usually used to poll a rate table that has pending responses immediately after creation via the "Submit lead" endpoint. For more details see [the Lead overview](https://engine.tech/docs/api-reference/#even-financial-api-lead).'
      operationId: getRateTable
      security:
      - publishableBearerToken: []
      tags:
      - Lead
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateTable'
              examples:
                loanRateTable:
                  $ref: '#/components/examples/LoanRateTable'
        '400':
          description: Malformed request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
              examples:
                invalidUuidPathParameter:
                  $ref: '#/components/examples/InvalidUuidPathParameter'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
        '404':
          description: Unknown UUID
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
              examples:
                invalidRateTableReference:
                  $ref: '#/components/examples/InvalidRateTableReference'
  /leads/{uuid}:
    parameters:
    - name: uuid
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      x-implemented-by:
        service: lead
        path: /leads/{uuid}
      summary: Get lead
      description: Get the lead for a specified UUID. If the UUID is unkown, a `404 Not Found` response will be returned.
      operationId: getLead
      security:
      - confidentialBearerToken: []
      tags:
      - Lead
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Lead'
              examples:
                loanLead:
                  $ref: '#/components/examples/LoanLead'
        '400':
          description: Malformed request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
              examples:
                invalidUuidPathParameter:
                  $ref: '#/components/examples/InvalidUuidPathParameter'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
        '404':
          description: Unknown UUID
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
              examples:
                invalidRateTableReference:
                  $ref: '#/components/examples/InvalidRateTableReference'
    patch:
      x-implemented-by:
        service: lead
        path: /leads/{uuid}
      summary: Update a lead
      description: Update a `Lead` by its UUID. Array fields (like `productTypes`) with new values are _merged_ with existing values.
      operationId: updateLead
      security:
      - confidentialBearerToken: []
      tags:
      - Lead
      requestBody:
        description: A LeadCreateData object
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeadCreateData'
      responses:
        '200':
          description: Lead updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeadUuid'
                example:
                  uuid: 81c08fb9-559a-4bab-948c-ba38f8dd0dcc
        '400':
          description: Invalid data
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiError'
              examples:
                invalid-uuid:
                  value:
                  - message: 'Cannot parse parameter uuid as UUID: Invalid UUID string: 123'
                invalid-body:
                  value:
                  - message: 'Invalid fields present: 123 is not a valid email'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
        '404':
          description: '`Lead` with the given UUID does not exist'
components:
  schemas:
    ProvidedCreditRating:
      type: string
      enum:
      - excellent
      - good
      - fair
      - poor
      - limited
      - unknown
    MortgageOfferDetails:
      type: object
      required:
      - interestRate
      - loanType
      - priceAdjustment
      - monthlyPayment
      - netClosingCosts
      - apr
      - loanTerm
      - adjustmentType
      properties:
        interestRate:
          type: number
        loanType:
          $ref: '#/components/schemas/MortgageLoanType'
        priceAdjustment:
          type: number
        monthlyPayment:
          type: number
        netClosingCosts:
          type: number
        apr:
          type: number
        loanTerm:
          type: integer
          format: int32
        adjustmentType:
          $ref: '#/components/schemas/MortgageAdjustmentType'
    EmploymentStatus:
      type: string
      enum:
      - employed
      - employed_full_time
      - employed_part_time
      - military
      - not_employed
      - self_employed
      - retired
      - other
    LoanPurpose:
      type: string
      enum:
      - auto
      - auto_purchase
      - auto_refinance
      - baby
      - boat
      - business
      - car_repair
      - cosmetic
      - credit_card_refi
      - debt_consolidation
      - emergency
      - engagement
      - green
      - home_improvement
      - home_purchase
      - home_refi
      - household_expenses
      - large_purchases
      - life_event
      - medical_dental
      - motorcycle
      - moving_relocation
      - other
      - rv
      - special_occasion
      - student_loan
      - student_loan_refi
      - taxes
      - vacation
      - wedding
    Originator:
      type: object
      required:
      - key
      - name
      - images
      properties:
        key:
          type: string
        name:
          type: string
        description:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/OriginatorImage'
        disclaimer:
          type: string
        companyUuid:
          type: string
          format: uuid
        financialInstitutionUuid:
          type: string
          format: uuid
          description: 'A unique identifier for the associated financial institution. Only present for event types associated with financial institutions.

            '
    RejectReason:
      type: string
      enum:
      - low_fico
      - no_fico
      - major_derogatory
      - underwriting_decline
      - debt_to_income_ratio
      - not_in_active_state
      - incorrect_data_provided
      - duplicate
    SpecialOffer:
      type: object
      required:
      - uuid
      - name
      - desc
      - url
      - partnerName
      - partnerImageUrl
      - productSubType
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
        desc:
          type: string
          description: Description
        url:
          type: string
          format: url
        partnerName:
          type: string
        partnerImageUrl:
          type: string
          format: url
        recommendationScore:
          type: number
        payout:
          type: number
        productSubType:
          $ref: '#/components/schemas/ProductSubType'
        disclaimer:
          type: string
        financialInstitutionUuid:
          type: string
          format: uuid
          description: 'A unique identifier for the associated financial institution. Only present for event types associated with financial institutions.

            '
    LeadHealthInformationJson:
      type: object
      properties:
        gender:
          $ref: '#/components/schemas/Gender'
        heightInInches:
          type: integer
          format: int32
        weightInPounds:
          type: integer
          format: int32
        tobaccoSmoker:
          type: boolean
    ApiError:
      type: object
      properties:
        attribute:
          type: string
          description: 'The attribute that this error applies to. Omitted if this error is not in the context of a resource, or cannot be isolated to a single attribute.

            '
        type:
          type: string
          description: 'A classification for this error, which can be used to render the appropriate custom error template, or take other programmatic actions.

            '
        details:
          description: 'Variables associated with this error that can be injected into a custom error template, or used to parameterize any other programatic actions.

            '
          allOf:
          - $ref: '#/components/schemas/ApiErrorDetails'
        message:
          type: string
          description: 'A human-readable, English description of the error.

            '
    EducationLevel:
      type: string
      enum:
      - high_school
      - associate
      - bachelors
      - masters
      - doctorate
      - other_grad_degree
      - certificate
      - did_not_graduate
      - still_enrolled
      - other
    PropertyType:
      type: string
      enum:
      - rent
      - condo
      - multi_unit
      - single_family
      - townhouse
    GraduateDegreeType:
      type: string
      enum:
      - doctor_of_medicine
      - doctor_of_osteopathic_medicine
      - doctor_of_optometry
      - doctor_of_dental_medicine
      - dentariae_medicinae_doctoris
      - doctor_of_dental_surgery
      - doctor_of_veterinary_medicine
      - doctor_of_pharmacy
      - veterinariae_medicinae_doctoris
      - master_of_arts
      - master_of_science
      - master_of_research
      - master_of_research_project
      - master_of_studies
      - master_of_business_administration
      - master_of_library_science
      - master_of_public_administration
      - master_of_public_health
      - master_of_laws
      - master_of_arts_liberal_studies
      - master_of_fine_arts
      - master_of_music
      - master_of_education
      - master_of_engineering
      - master_of_architecture
      - juris_doctor
      - other
    LeadCreditInformationJson:
      type: object
      description: Credit history information relating to a `Lead`
      properties:
        providedCreditRating:
          $ref: '#/components/schemas/ProvidedCreditRating'
        providedNumericCreditScore:
          type: integer
          format: int32
          description: FICO credit score provided by a `Lead`
    RefinanceType:
      type: string
      enum:
      - cash_out
      - rate_term
    LeadBestTimeToCall:
      type: string
      enum:
      - morning
      - afternoon
      - evening
      - night
    RefinanceLoanType:
      type: string
      enum:
      - federal_student_loan
      - private_student_loan
    LeadEmploymentInformationJson:
      type: object
      properties:
        employerName:
          type: string
        employerAddress:
          type: string
        employerAddress2:
          type: string
        employerCity:
          type: string
        employerPhone:
          type: string
        employerState:
          type: string
        employerZip:
          type: string
        jobTitle:
          type: string
        monthsEmployed:
          type: integer
          format: int32
        directDeposit:
          type: boolean
          description: Whether a `Lead` uses direct deposit for their salary
        payDate1:
          type: string
          format: date
        payDate2:
          type: string
          format: date
        startDate:
          type: string
          format: date
          description: The date the lead started working at their current employer (YYYY-MM-DD)
    SavingsOfferDetails:
      type: object
      required:
      - annualPercentYield
      - compoundingMethod
      - minimumDeposit
      - monthlyFee
      - effectiveAsOf
      properties:
        name:
          type: string
        description:
          type: string
        details:
          type: string
        rate:
          type: number
          description: Annual interest rate
        annualPercentYield:
          type: number
        compoundingMethod:
          $ref: '#/components/schemas/CompoundingMethod'
        introductoryPeriodMonths:
          type: integer
          format: int32
        introductoryRate:
          type: number
        minimumDeposit:
          type: number
        minimumDepositWithFees:
          type: number
        monthlyFee:
          type: number
        checkWriting:
          type: boolean
          description: Whether the account allows checks
        effectiveAsOf:
          type: string
          format: date-time
          description: When the offer was last validated, formatted as yyyy-MM-ddTHH:mm:ss.SSSZZ
        federalInsuranceType:
          description: 'The type of federal deposit insurance that applies to this offer, if

            it was provided by the financial institution. Could be one of `fdic` for

            the Federal Deposit Insurance Corporation, or `ncua` for the National

            Credit Union Administration.

            '
          allOf:
          - $ref: '#/components/schemas/FederalInsuranceType'
        incentiveDetails:
          type: array
          items:
            $ref: '#/components/schemas/IncentiveDetails'
        cdTermUnit:
          $ref: '#/components/schemas/TermUnit'
        cdTermLength:
          type: integer
          format: int32
        impressionTrackingPixelUrls:
          type: array
          items:
            type: string
            format: url
    LeadUuid:
      type: object
      required:
      - uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID corresponding to the created `Lead`
    ProductSubType:
      type: string
      description: A type of financial product
      enum:
      - credit_card
      - secured_card
      - student_card
      - personal_loan
      - secured_loan
      - student_loan_refinance
      - co_applicant_loan
      - line_of_credit
      - automobile_refinance
      - home_equity_line_of_credit
      - purchase
      - refinance
      - savings_account
      - money_market_account
      - certificate_of_deposit
      - individual_retirement_account
      - cash_management_account
      - high_interest_checking
      - checking
      - accidental_death_benefits
      - term_life
      - term_life_instant
      - whole_life
      - bill_reduction
      - debt_relief
      - installment_loans
      - credit_builder
      - cash_advance
      - credit_repair
      - education_offers
      - employment_opportunity
      - financial_wellness
      - direct_affiliate
      - overdraft_protection
      - revenue_based_financing
      - installment_loan_more_offers
      - credit_card_more_offers
      - credit_repair_more_offers
      - student_loan
      - health
      - auto_and_vehicle
      - games
      - home
      - rewards
      - life_insurance
      - auto_insurance
      - specialty_vehicle_insurance
      - home_owners_insurance
      - renters_insurance
      - uncategorized
      - buy_now_pay_later
      - home_equity_agreements
      - cash_advance_moneylion
      - unknown
    CreditCardOffer:
      type: object
      description: An offer for a credit card
      required:
      - details
      properties:
        details:
          $ref: '#/components/schemas/CreditCardOfferDetails'
      allOf:
      - $ref: '#/components/schemas/Offer'
    PropertyStatus:
      type: string
      enum:
      - own_outright
      - own_with_mortgage
      - rent
    LeadCoApplicantInformationJson:
      type: object
      description: 'The personal information of a co-applicant that may be considered in the

        underwriting and approval of a loan.

        '
      properties:
        firstName:
          type: string
        lastName:
          type: string
        dateOfBirth:
          type: string
          format: date
        annualIncome:
          type: integer
          format: int32
        streetAddress1:
          type: string
          description: Street address (primary address line)
        streetAddress2:
          type: string
          description: Secondary address line
        city:
          type: string
        state:
          $ref: '#/components/schemas/State'
        zipcode:
          type: string
          pattern: ^\d{5}([-\s]\d{4})?$
    SavingsOffer:
      type: object
      description: An offer for a savings account
      required:
      - details
      properties:
        details:
          $ref: '#/components/schemas/SavingsOfferDetails'
      allOf:
      - $ref: '#/components/schemas/Offer'
    IdType:
      type: string
      enum:
      - driver_license
      - state_id
      - passport
    LeadFinancialInformation:
      type: object
      properties:
        employmentStatus:
          $ref: '#/components/schemas/EmploymentStatus'
        employmentPayFrequency:
          $ref: '#/components/schemas/EmploymentPayFrequency'
        annualIncome:
          type: integer
          format: int32
        monthlyNetIncome:
          type: integer
          format: int32
        bankName:
          type: string
        bankRoutingNumber:
          type: string
        bankAccountType:
          $ref: '#/components/schemas/BankAccountType'
        creditCardDebt:
          type: integer
          format: int32
        monthsAtBank:
          type: integer
          format: int32
        bankAccountNumber:
          type: string
        monthlyDebt:
          type: integer
          format: int32
        totalAssets:
          type: integer
          format: int32
        monthlyHousingPayment:
          type: integer
          format: int32
        availableAssets:
          type: integer
          format: int32
        additionalIncome:
          type: integer
          format: int32
          description: The amount of additional income the lead recieves
        additionalIncomeFrequency:
          $ref: '#/components/schemas/EmploymentPayFrequency'
          description: The frequency the lead recieves additional income
        hasDirectDeposit:
          type: boolean
          description: Do you have a direct deposit?
        totalUnsecuredDebt:
          type: integer
          format: int32
          description: Approximate total unsecured debt in dollars
    LoanOffer:
      type: object
      required:
      - uuid
      - originator
      - maxAmount
      - allowPrepayment
      - preQualified
      - preApproved
      - secured
      - coApplicant
      - sponsored
      - productType
      - productSubType
      - aprType
      properties:
        uuid:
          type: string
          format: uuid
        productType:
          $ref: '#/components/schemas/ProductType'
        productSubType:
          $ref: '#/components/schemas/ProductSubType'
        productSubTypeDisclaimer:
          type: string
        url:
          type: string
          format: url
        originator:
          $ref: '#/components/schemas/Originator'
        originatorId:
          type: string
        preQualified:
          type: boolean
        preApproved:
          type: boolean
        secured:
          type: boolean
        coApplicant:
          type: boolean
        sponsored:
          type: boolean
          deprecated: true
        maxAmount:
          type: integer
          format: int32
        minAmount:
          type: integer
          format: int32
        termLength:
          type: integer
          format: int32
        termUnit:
          $ref: '#/components/schemas/TermUnit'
        displayTermUnit:
          type: string
        termDescription:
          type: string
        maxApr:
          type: number
        minApr:
          type: number
        meanApr:
          type: number
        aprType:
          $ref: '#/components/schemas/AprType'
        aprDescription:
          type: string
        feeRate:
          type: number
          description: The maximum percent of loan amount fee for an offer. `maxFeeRate` should be used instead
          deprecated: true
        maxFeeRate:
          type: number
        minFeeRate:
          type: number
        feeFixed:
          type: number
          description: The maximum fee, in dollars, for an offer. `maxFeeFixed` should be used instead
          deprecated: true
        maxFeeFixed:
          type: number
        minFeeFixed:
          type: number
        allowPrepayment:
          type: boolean
        prepaymentFee:
          type: number
        monthlyPayment:
          type: number
          description: The estimated maximum monthly payment, in dollars, for an offer. `maxMonthlyPayment` should be used instead
          deprecated: true
        maxMonthlyPayment:
          type: number
        minMonthlyPayment:
          type: number
        monthlyPaymentDescription:
          type: string
        meanMonthlyPayment:
          type: number
        maxTotalPayment:
          ty

# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/even-financial/refs/heads/main/openapi/even-financial-lead-api-openapi.yml