Even Financial Offer Preview API

Preview offers are matched based upon a simple set of anonymous criteria and as a result are not personalized. This is useful if you'd like to display offers without requesting personalized data. For example, you can improve a search experience by presenting example offers to the user prior to asking more detailed questions. Offers returned by these endpoints are identical to those that would be included in a rate table. But keep in mind that they are not personalized, and it's a better user experience to ultimtely present personalized offers to a user.

Operations 3

GET /offerPreview/loanOffers Get preview loan offers #
GET /offerPreview/creditCardOffers Get preview credit card offers #
GET /offerPreview/savingsOffers Get preview savings offers #

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-offer-preview-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 email required.

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

OpenAPI Specification

even-financial-offer-preview-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Engine by MoneyLion Analytics Offer Preview 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: Offer Preview
  description: 'Preview offers are matched based upon a simple set of anonymous criteria and as a result are not personalized. This is useful if you''d like to display offers without requesting personalized data. For example, you can improve a search experience by presenting example offers to the user prior to asking more detailed questions.


    Offers returned by these endpoints are identical to those that would be included in a rate table. But keep in mind that they are not personalized, and it''s a better user experience to ultimtely present personalized offers to a user.

    '
paths:
  /offerPreview/loanOffers:
    get:
      x-lint-skip:
      - index-endpoint-has-limit
      x-implemented-by:
        service: originator
        path: /preview/loanOffers
      summary: Get preview loan offers
      description: Get a list of non-personalized loan offers that match the specified critieria.
      operationId: getPreviewLoanOffers
      security:
      - publishableBearerToken: []
      tags:
      - Offer Preview
      parameters:
      - name: loanAmount
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: providedCreditRating
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/ProvidedCreditRating'
      - name: loanPurpose
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/LoanPurpose'
      - name: zipCode
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LoanOffer'
              examples:
                previewLoanOffers:
                  $ref: '#/components/examples/PreviewLoanOffers'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
  /offerPreview/creditCardOffers:
    get:
      x-lint-skip:
      - index-endpoint-has-limit
      x-implemented-by:
        service: originator
        path: /preview/creditCardOffers
      summary: Get preview credit card offers
      description: Get a list of non-personalized credit card offers that match the specified critieria.
      operationId: getPreviewCreditCardOffers
      security:
      - publishableBearerToken: []
      tags:
      - Offer Preview
      parameters:
      - name: providedCreditRating
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/ProvidedCreditRating'
      - name: zipCode
        in: query
        required: false
        schema:
          type: string
      - name: cardPurposes
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/CardPurpose'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CreditCardOffer'
              examples:
                previewCreditCardOffers:
                  $ref: '#/components/examples/PreviewCreditCardOffers'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
  /offerPreview/savingsOffers:
    get:
      x-lint-skip:
      - index-endpoint-has-limit
      x-implemented-by:
        service: originator
        path: /preview/savingsOffers
      summary: Get preview savings offers
      description: Get a list of non-personalized savings offers that match the specified critieria.
      operationId: getPreviewSavingsOffers
      security:
      - publishableBearerToken: []
      tags:
      - Offer Preview
      parameters:
      - name: maxDepositAmount
        in: query
        schema:
          type: integer
          format: int64
      - name: minDepositAmount
        in: query
        schema:
          type: integer
          format: int64
      - name: zipCode
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SavingsOffer'
              examples:
                previewSavingsOffers:
                  $ref: '#/components/examples/PreviewSavingsOffers'
        '401':
          $ref: '#/components/responses/UnauthorizedRequest'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    ProvidedCreditRating:
      type: string
      enum:
      - excellent
      - good
      - fair
      - poor
      - limited
      - unknown
    CreditCardOffer:
      type: object
      description: An offer for a credit card
      required:
      - details
      properties:
        details:
          $ref: '#/components/schemas/CreditCardOfferDetails'
      allOf:
      - $ref: '#/components/schemas/Offer'
    CompoundingMethod:
      type: string
      enum:
      - annually
      - continuous
      - daily
      - monthly
      - quarterly
      - semiAnnually
      - simple
      - weekly
    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.

            '
    SavingsOffer:
      type: object
      description: An offer for a savings account
      required:
      - details
      properties:
        details:
          $ref: '#/components/schemas/SavingsOfferDetails'
      allOf:
      - $ref: '#/components/schemas/Offer'
    ApiErrorDetails:
      type: object
      additionalProperties:
        type: string
    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.

            '
    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
    Partner:
      type: object
      required:
      - uuid
      - name
      - description
      - disclaimer
      - supportsPreSelect
      - shouldDisplayPreSelect
      - supportsPersonalizedOffers
      - imageUrl
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
        description:
          type: string
        disclaimer:
          type: string
        supportsPreSelect:
          type: boolean
        shouldDisplayPreSelect:
          type: boolean
        supportsPersonalizedOffers:
          type: boolean
          description: Whether the partner supports returning pre-qualified or pre-approved offers
        imageUrl:
          type: string
          format: url
        subtextOverride:
          type: string
        headquarters:
          type: string
        assets:
          type: string
        brandName:
          type: string
          description: The external-facing name that will appear on offer cards, marketing materials, and other end user touchpoints
        brandUuid:
          type: string
          format: uuid
    ProductType:
      type: string
      enum:
      - credit_card
      - generic
      - auto_insurance
      - insurance
      - life_insurance
      - loan
      - mortgage
      - savings
      - other
      - unknown
    OriginatorImage:
      type: object
      required:
      - sizeKey
      - url
      properties:
        sizeKey:
          type: string
        url:
          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
    CardType:
      type: string
      enum:
      - visa
      - mastercard
      - american_express
      - discover
    TermUnit:
      type: string
      description: 'Unit of measure for offer term lengths, or open for a single term.

        '
      enum:
      - day
      - month
      - year
      - open
    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:
          type: number
        minTotalPayment:
          type: number
        meanTotalPayment:
          type: number
        recommendationScore:
          type: number
        payout:
          type: number
        conversionProbability:
          type: number
        terms:
          type: string
        amountPrefix:
          type: string
          description: Some loan offers require a prefix (e.g. `up to*`) to be displayed to the left of the displayed loan amount. This is a nullable field that may be up to six characters long.
    FederalInsuranceType:
      type: string
      enum:
      - fdic
      - ncua
    IntroOfferType:
      type: string
      enum:
      - miles
      - points
      - statement_credit
    AprType:
      type: string
      enum:
      - variable
      - regular
      - fixed
    CardBenefit:
      type: string
      description: Benefits or benefit categories related to a credit card
      enum:
      - No Foreign Transaction Fees
      - Purchase Protection
      - Return Protection
      - Price Protection
      - Fraud Protection
      - Extended Warranty
      - Travel Accident Insurance
      - Trip Interruption Insurance
      - Car Rental Insurance
      - Baggage Insurance
      - Baggage Delay Insurance
      - Hotel Burglary Insurance
      - Travel & Emergency Assistance
      - Roadside Assistance
      - Concierge Service
      - Lounge Access
      - Identity Theft Assistance
      - In-Flight Savings
      - Free Checked Bag
      - Priority Boarding
      - No Blackout Dates
      - Free Companion Ticket
      - Discount Companion Ticket
      - Global Entry or TSA PreCheck
      - Private Jet Perks
      - Lounge Access Discount
      - 24/7 Cardholder Support
      - Authorized User
      - Entertainment Access
      - Airline Fee Credit
      - Late Fee Pass
      - Credit Score Reporting
      - No Flight Change Fees
      - 24/7 Account Monitoring
      - Amex Offers
      - Visa Signature Offers
      - MasterCard Offers
      - Free Hotel Stay
      - Extended Hotel Stay
      - Dining Concierge
      - 2 Lounge Passes
      - Hilton Honors Silver Membership
      - Hilton Honors Gold Membership
      - World of Hyatt Discoverist Status
      - SPG Gold Membership
      - Marriott Rewards Silver Status
      - Hertz Presidents Circle Elite Status
      - 2 Free Checked Bags
      - Auto Discounts
      - InCircle Partnership
      - ShopRunner
      - WiFi Access
      - ShopSafe
      - BoA Preferred Rewards
      - MasterCard Fuel Rewards Network
      - Missed Event Ticket Protection
      - Account Freezing
      - Cell Phone Protection
      - GPA Rewards
      - In-Flight WiFi Credit
      - Citi Private Pass
      - Priceless Cities
      - The Hotel Collection
      - By Invitation Only
      - Luxury Hotel Collection
      - Expedia+ Silver Status
      - Expedia+ Gold Status
      - $100 American Airlines Discount
      - Disney Parks Perks and Savings
      - Ritz-Carlton Gold Elite Status
      - Ritz-Carlton Club Level Upgrade
      - Annual Travel Credit
      - IHG Platinum Elite Status
      - QuickBooks Connect
      - ReceiptMatch
      - Employee Spending Limits
      - FX International Payments
      - No Pre-Set Spending Limit
      - Purchase Financing
      - Amex Open Savings
      - Amazon Special Financing
      - $100 Ritz-Carlton Hotel Credit
      - British Airways Companion Ticket
      - Mercedes-Benz Gift Certificates
      - Mercedes-Benz Excess Mileage Waiver
      - JetBlue Annual Statement Credit
      - 20% Discount on Delta Flights for Delta Private Jet Members
      - Expense Report Features
      - Business Cell Phone Protection
      - Free Shipping on most Target.com orders
      - 30 Extra Days for Returns
      - Free clothing altertaions
      - Personal shopping
      - Shopmyway Savings
      - Online Subscription Credit
      - Uber Exclusive Access
      - Airline Benefits
      - Hotel Benefits
      - Other Travel Benefits
      - Emergency Assistance
      - Experiences
      - Shopping Benefits
      - Cardholder Benefits
      - Enhanced Security
      - Business Benefits
      - Other Benefits
      - In-Flight Discounts
      - Fee Coverage
      - Flight Credits & Discounts
      - Hotel Membership Status
      - Hotel Credit & Free Stays
      - Travel Credit
      - Travel Experiences Programs
      - Car Rental Membership Status
      - Extra Gas Rewards
      - Shopping Protection
      - Shopping Discounts
      - Free Shipping
      - The Boingo American Express Preferred Plan
      - AirSpace Lounge
      - Uber Monthly Credit
      - Ride Share Benefits
      - Delta Sky Club
      - Admirals Club Membership
      - Priority Pass Select Membership (Prestige)
      - Priority Pass Select Membership (Standard Plus)
      - Daily Breakfast
      - Early Check-in & Late Check-out
      - Room Upgrades
      - Complementary WiFi
      - Amex Hotel Collection Credit
      - Temporary Account Numbers
      - One-Time 50% Discount on Companion Ticket
      - Airline Travel Credit
      - United Club Membership
      - Chip Technology
      - Earn More Miles for Sharing Travel Stories
      - Mastercard World Elite Concierge and Luxury Travel Benefits
      - 20% Savings on Delta In-Flight Purchases
      - 25% Savings on United In-Flight Food and Drink Purchases
      - $100 Hilton Properties Credit
      - $250 Hilton Resort Credit
      - Hilton Honors Diamond Membership
      - Free Birthday Gift
      - 2x Points During Your Birthday Month
      - Car Rental VIP Perks
      - Free shipping with the purchase of a bra
      - Monthly Dining Credit
      - Amazon Prime Student
    IncentiveUnit:
      type: string
      description: 'Unit of measure for incentives.

        '
      enum:
      - usd
      - other
    IncentiveType:
      type: string
      description: 'Unit of measure for incentives.

        '
      enum:
      - cash_back
      - other
    PreviewDetail:
      type: object
      properties:
        description:
          type: string
        disclaimer:
          type: string
      required:
      - description
    IncentiveDetails:
      type: object
      required:
      - amount
      - unit
      - display
      - type
      properties:
        amount:
          type: number
          format: double
        unit:
          $ref: '#/components/schemas/IncentiveUnit'
        display:
          type: string
          maxLength: 20
        type:
          $ref: '#/components/schemas/IncentiveType'
    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
    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 

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