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.

OpenAPI Specification

even-financial-lead-api-openapi.yml Raw ↑
openapi: 3.0.3
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:
    PropertyType:
      type: string
      enum:
      - rent
      - condo
      - multi_unit
      - single_family
      - townhouse
    PersonalReferenceRelationType:
      type: string
      enum:
      - parent
      - employer
      - spouse
      - guardian
      - sibling
      - relative
      - friend
      - other
    CardPurpose:
      type: string
      description: Purposes or categories related to a credit card
      enum:
      - balance_transfer
      - cash_back
      - earning_rewards
      - improve_credit
      - low_interest
      - new_to_credit
      - student
      - travel_incentives
    LeadSavingsInformationJson:
      type: object
      properties:
        minDepositAmount:
          type: integer
          format: int32
          description: The minimum amount a `Lead` is interested in depositing when opening a new savings account
        maxDepositAmount:
          type: integer
          format: int32
          description: The maximum amount a `Lead` is interested in depositing when opening a new savings account
    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.

            '
    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)
    LeadUuid:
      type: object
      required:
      - uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID corresponding to the created `Lead`
    CreditCardOfferDetails:
      type: object
      required:
      - cardImageUrl
      - cardType
      - preQualified
      - preApproved
      - preSelected
      properties:
        cardName:
          type: string
          description: Display name of the card
        cardImageUrl:
          type: string
          format: url
          description: URL of the card image
        cardPurposes:
          type: array
          items:
            $ref: '#/components/schemas/CardPurpose'
        ratesUrl:
          type: string
          format: url
          description: External link to card rates, terms, and conditions
        maxPurchaseApr:
          type: number
          format: double
          description: Maximum purchase APR in percentage
        minPurchaseApr:
          type: number
          format: double
          description: Minimum purchase APR in percentage
        purchaseAprText:
          type: string
          description: Description of the purchase APR
        purchaseAprDisclaimer:
          type: string
          description: Disclaimer for the purchase APR
        maxPurchaseIntroApr:
          type: number
          format: double
          description: Maximum introductory purchase APR in percentage
        minPurchaseIntroApr:
          type: number
          format: double
          description: Minimum introductory purchase APR in percentage
        purchaseIntroAprTerm:
          type: integer
          format: int32
          description: Introductory purchase APR term length
        purchaseIntroAprTermUnit:
          $ref: '#/components/schemas/TermUnit'
        purchaseIntroAprText:
          type: string
          description: Description of the introductory purchase APR
        regularIntroAprCombinedText:
          type: string
          description: Description of introductory and regular APR combined
        maxCashAdvanceApr:
          type: number
          format: double
          description: Maximum cash advance APR in percentage
        minCashAdvanceApr:
          type: number
          format: double
          description: Minimum cash advance APR in percentage
        cashAdvanceAprText:
          type: string
          description: Description of the cash advance APR
        maxCashAdvanceIntroApr:
          type: number
          format: double
          description: Maximum introductory cash advance APR in percentage
        minCashAdvanceIntroApr:
          type: number
          format: double
          description: Minimum introductory cash advance APR in percentage
        cashAdvanceIntroAprTerm:
          type: integer
          format: int32
          description: Introductory cash advance APR term length
        cashAdvanceIntroAprTermUnit:
          $ref: '#/components/schemas/TermUnit'
        cashAdvanceIntroAprText:
          type: string
          description: Description of the introductory cash advance APR
        maxBalanceTransferApr:
          type: number
          format: double
          description: Maximum balance transfer APR in percentage
        minBalanceTransferApr:
          type: number
          format: double
          description: Minimum balance transfer APR in percentage
        balanceTransferAprText:
          type: string
          description: Description of the balance transfer APR
        maxBalanceTransferIntroApr:
          type: number
          format: double
          description: Maximum introductory balance transfer APR in percentage
        minBalanceTransferIntroApr:
          type: number
          format: double
          description: Minimum introductory balance transfer APR in percentage
        balanceTransferIntroAprTerm:
          type: integer
          format: int32
          description: Introductory balance transfer APR term length
        balanceTransferIntroAprTermUnit:
          $ref: '#/components/schemas/TermUnit'
        balanceTransferIntroAprText:
          type: string
          description: Description of the introductory balance transfer APR
        balanceTransferFee:
          type: number
          format: double
          description: Balance transfer fee as a percentage
        balanceTransferFeeDisclaimer:
          type: string
          description: Disclaimer related to the balance transfer fee
        maxAnnualFee:
          type: number
          format: double
          description: Maximum annual fee in dollars
        minAnnualFee:
          type: number
          format: double
          description: Minimum annual fee in dollars
        annualFeeDisclaimer:
          type: string
          description: Disclaimer for the annual fee
        annualFeeText:
          type: string
          description: Description for the annual fee
        annualIntroFee:
          type: number
          format: double
          description: Introductory annual fee in dollars
        annualIntroFeeTerm:
          type: integer
          format: int32
          description: Number of years the introductory annual fee is in effect
        introOfferAmount:
          type: number
          format: double
          description: Amount of the introductory offer
        introOfferText:
          type: string
          description: Description of the introductory offer
        introOfferDisclaimer:
          type: string
          description: Disclaimer for the introductory offer
        introOfferType:
          $ref: '#/components/schemas/IntroOfferType'
        introOfferTitle:
          type: string
          description: Title for the introductory offer
        details:
          type: array
          items:
            type: string
          description: List of card features which must be prominently displayed with the offer
        additionalDetails:
          type: array
          items:
            type: string
          description: List of card features which must be displayed with the offer
        previewDetails:
          type: array
          items:
            $ref: '#/components/schemas/PreviewDetail'
          description: Shorter list of descriptions and disclaimers suitable for display in a preview context
        cardType:
          $ref: '#/components/schemas/CardType'
        minimumCreditLine:
          type: number
          format: double
          description: Minimum credit line in dollars
        minimumPenaltyApr:
          type: number
          format: double
          description: Minimum penalty APR in percentage
        maximumPenaltyApr:
          type: number
          format: double
          description: Maximum penalty APR in percentage
        aprType:
          $ref: '#/components/schemas/AprType'
        cashAdvanceFee:
          type: number
          format: double
          description: Cash advance fee in dollars
        lateFee:
          type: number
          format: double
          description: Late fee in dollars
        foreignExchangeFee:
          type: number
          format: double
          description: Foreign exchange fee in dollars
        accountOpeningFee:
          type: number
          format: double
          description: Account opening fee in dollars
        returnPaymentFee:
          type: number
          format: double
          description: Return payment fee in dollars
        monthlyServiceFee:
          type: number
          format: double
          description: Monthly service fee in dollars
        recommendedCreditRatings:
          type: array
          items:
            $ref: '#/components/schemas/ProvidedCreditRating'
        recommendedCreditRatingsDisclaimer:
          type: string
          description: Disclaimer about the recommended credit rating
        recommendedCreditRatingsText:
          type: string
          description: Description about the recommended credit rating
        preQualified:
          type: boolean
        preApproved:
          type: boolean
        preSelected:
          type: boolean
          description: Indicates that Engine by MoneyLion has determined that the user has an increased likelihood of being approved for this card.
        foreignTransactionFee:
          type: number
          format: double
          description: Percentage represented in decimal format added to all foreign transactions
        earningProgram:
          type: object
          description: Credit card earning program details (arbitrary JSON object)
        cardBenefits:
          type: array
          items:
            $ref: '#/components/schemas/CardBenefit'
        rewardsDescription:
          type: string
          description: Description of rewards associated with the card
        rewardsDisclaimer:
          type: string
          description: Disclaimer for rewards
        rewardsTitle:
          type: string
          description: Title for rewards
        minDepositAmount:
          type: number
          format: double
          description: Minimum deposit required in dollars
        minDepositDisclaimer:
          type: string
          description: Disclaimer about the minimum deposit
        isITA:
          type: boolean
          description: Indicates if the card is an Invitation to Apply (ITA) offer
        badges:
          type: array
          items:
            type: string
    Offer:
      type: object
      required:
      - uuid
      - partner
      - productType
      - productSubType
      - url
      properties:
        uuid:
          type: string
          format: uuid
        partner:
          $ref: '#/components/schemas/Partner'
        marketplace:
          $ref: '#/components/schemas/Partner'
        productType:
          $ref: '#/components/schemas/ProductType'
        productSubType:
          $ref: '#/components/schemas/ProductSubType'
        url:
          type: string
          format: url
        recommendationScore:
          type: number
        disclaimer:
          type: string
        productSubTypeDisclaimer:
          type: string
        expiresAt:
          type: string
          format: date-time
        rank:
          type: integer
    MortgageLoanType:
      type: string
      enum:
      - ten_year_fixed
      - fifteen_year_fixed
      - twenty_year_fixed
      - thirty_year_fixed
      - forty_year_fixed
      - three_year_intro_30_year_adjustable
      - five_year_intro_30_year_adjustable
      - seven_year_intro_30_year_adjustable
      - ten_year_intro_30_year_adjustable
    LeadLoanInformationJson:
      type: object
      properties:
        purpose:
          $ref: '#/components/schemas/LoanPurpose'
        loanAmount:
          type: integer
          format: int32
    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.

            '
    FederalInsuranceType:
      type: string
      enum:
      - fdic
      - ncua
    CreditCardOffer:
      type: object
      description: An offer for a credit card
      required:
      - details
      properties:
        details:
          $ref: '#/components/schemas/CreditCardOfferDetails'
      allOf:
      - $ref: '#/components/schemas/Offer'
    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
 

# --- 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