PartnerVinPlanSearchWithUserInfoModel

  • searchCriteria
    Type: object · VinSearchCriteriaWithUserInfo
    required

    Vehicle information used to search for available protection plans. Required. The fields within depend on the search type (VIN, Make/Model/Year, or License Plate).

    • vin
      Type: string
      min length:  
      17
      max length:  
      17
      required

      17-character Vehicle Identification Number. Required.

    • mileage
      Type: integer Format: int32

      Current vehicle odometer reading in miles. Required. Must be between 1 and 250,000.

  • userDetails
    Type: object · UserDetailsModel
    required

    Customer billing and contact information for account creation. If the email already exists, the user profile is updated with any new information provided.

    • address
      Type: string Pattern: ^(?=.*[a-zA-Z])(?!.*@).*$
      required

      Customer's street address. Required. 5-60 characters, must include street name.

    • city
      Type: string Pattern: ^[A-Za-z\u00C0-\u024F''.\-]+(?:[\s\-][A-Za-z\u00C0-\u024F''.\-]+)*$
      required

      Customer's city. Required. 3-32 characters.

    • email
      Type: string Pattern: ^[^\s@]+@[^\s@]+\.[^\s@]+$Format: email
      required

      Customer's email address. Required. Must be a valid email format.

    • firstName
      Type: string Pattern: ^[a-zA-Z' .-]+$
      required

      Customer's first name. Required. 2-32 characters, letters only (including dot, whitespace, dash, apostrophe).

    • lastName
      Type: string Pattern: ^[a-zA-Z' .-]+$
      required

      Customer's last name. Required. 2-32 characters, letters only (including dot, whitespace, dash, apostrophe).

    • state
      Type: string Pattern: ^[a-zA-Z]+$
      required

      Two-letter US state code. Required. Must match the state derived from the ZIP code.

    • zip
      Type: string Format: postal-code
      required

      5-digit US ZIP code. Required. Must be a valid ZIP code that matches the state.

    • addressApartment
      Type: string | null

      Optional. Apartment, suite, or unit number. Maximum 4 characters.

    • billingAddress
      Type: string | null Pattern: ^(?=.*[a-zA-Z])(?!.*@).*$

      Billing street address. Required when isBillingAddressDifferent is true. 5 to 60 characters, must contain a letter, and must not contain an @.

    • billingAddressApartment
      Type: string | null

      Billing apartment, suite, or unit. Always optional, even when isBillingAddressDifferent is true. Maximum 4 characters.

    • billingCity
      Type: string | null

      Billing city. Required when isBillingAddressDifferent is true. 3 to 32 characters.

    • billingFirstName
      Type: string | null Pattern: ^[a-zA-Z' .-]+$

      Cardholder's first name. Required when isBillingAddressDifferent is true. 2 to 32 characters. Letters plus dot, space, dash, and apostrophe only; no digits.

    • billingLastName
      Type: string | null Pattern: ^[a-zA-Z' .-]+$

      Cardholder's last name. Required when isBillingAddressDifferent is true. 2 to 32 characters. Letters plus dot, space, dash, and apostrophe only; no digits.

    • billingState
      Type: string | null Pattern: ^[a-zA-Z]+$

      Billing state as a two-letter US code. Required when isBillingAddressDifferent is true. Letters only.

    • billingZip
      Type: string | null Format: postal-code

      Billing US ZIP code. Required when isBillingAddressDifferent is true. Unlike the customer's zip, this is not cross-checked against billingState.

    • isBillingAddressDifferent
      Type: boolean

      Set to true when the card's billing address differs from the customer's address above. Defaults to false, in which case every billing* field below is ignored and can be omitted.

      When true, all of billingFirstName, billingLastName, billingAddress, billingCity, billingState, and billingZip become required. Only billingAddressApartment stays optional.

    • phoneNumber
      Type: string | null

      Customer's phone number. Optional but recommended. 10-digit US phone number.

  • filters
    Type: object · PlanSearchFiltersnullable

    Optional filters to narrow down search results by provider, coverage type, price, duration, etc. If not provided, all matching plans are returned.

    • categoryTypes
      Type: array string[] | null

      Filter by component coverage categories. Only returns plans that cover specified categories. Values: "Engine", "TurboSuper", "TransferCase", "Steering", "Transmission", "DriveAxle", "Suspension", "AirCon", "Brakes", "Electricals", "Cooling", "Fuel", "Hybrid", "Body", "Consumables", "Exhaust", "General", "Interior", "Services", "Assist"

    • coverageType
      Type: string · CoverageTypeEnumenumnullable

      Filter by a single coverage type. Use coverageTypes for multiple values.

      Accepts the canonical names only: Powertrain, PowertrainPlus, MostComprehensive (or 1, 2, 3). The friendly aliases accepted by coverageTypes do not work here.

      values
      • None
      • Powertrain
      • PowertrainPlus
      • MostComprehensive
    • coverageTypes
      Type: array string[] | null

      Filter by several coverage types at once.

      Accepts either the canonical names (Powertrain, PowertrainPlus, MostComprehensive) or the friendly aliases (basic, basicplus, best), which map to them in that order.

      An unrecognized value is silently ignored rather than rejected, so a typo looks like a filter that had no effect. Results report coverage using the canonical names, so using those here keeps your request and response vocabularies the same.

    • duration
      Type: object · Int32Rangenullable

      Filter by contract duration range in months. Example: { "from": 24, "to": 60 } for 2-5 year contracts.

    • excludeProviders
      Type: array string[] | null

      Exclude specific providers from the results. Useful when you want all providers except certain ones.

    • miles
      Type: object · Int32Rangenullable

      Filter by coverage miles range in thousands. Example: { "from": 50, "to": 150 } for 50K-150K mile coverage. Value of 999 indicates unlimited mileage coverage.

    • monthlyPrice
      Type: object · DoubleRangenullable

      Filter by monthly payment amount range in USD. Example: { "from": 50, "to": 150 } for $50-$150/month plans.

    • numberOfProviders
      Type: integer | null Format: int32

      Limit the number of unique providers in the results. For example, set to 3 to get plans from at most 3 different providers.

    • planChaizRating
      Type: object · DecimalRangenullable

      Filter by Chaiz plan rating range (0-10 scale). Higher ratings indicate better coverage quality.

    • providers
      Type: array string[] | null

      Filter results to only include plans from specific providers. Use provider names like "NAAC", "Omega", "CAPS", "ServiceContract".

    • returnResults
      Type: integer Format: int32

      Maximum number of plan results to return. Default varies by partner configuration.

    • totalPrice
      Type: object · DoubleRangenullable

      Filter by total plan price range in USD. Example: { "from": 1000, "to": 5000 } for plans between $1,000-$5,000.

  • partner
    Type: string | null

    Your unique partner identifier provided during onboarding. Must match the partner identity in your authentication token.

  • responseDetailLevel
    Type: string · ResponseDetailLevelEnumenumnullable

    Optional. How much detail the response carries. Defaults to Full, which is the response shape documented for the 200 on these endpoints.

    Set to Essential for a much smaller payload aimed at lightweight integrations, LLMs, and agents. Each result then keeps only what you need to compare plans, pick one, and send the customer to checkout:

    searchResultPlanId, planId, totalPrice, downpayment, monthlyPrice, duration, deductible, miles, planName, displayProviderName, coverageType, planChaizRating, planRatingVerdict, planHighlights, resultLabels, recommendationSummary, planSummaryUrl, and planCheckoutUrl.

    Dropped in Essential: the coverage breakdown, per-component scores, add-ons, provider detail, payment-option discounts, and planContractUrl. If you need any of those, stay on Full.

    values
    • Full
    • Essential
  • resultOrder
    Type: string · ResultOrderEnumenumnullable

    Optional. Controls how the result list is ordered. "recommended" sorts by Chaiz recommendation score, "rating" by Chaiz plan rating, "none" preserves natural order. When omitted, the existing default ordering is used.

    values
    • Recommended
    • Rating
    • None
  • searchId
    Type: string | null Format: uuid

    Optional. Return cached results from a previous search. Useful for pagination or retrieving the same results without re-executing the search.

  • showProviderInfo
    Type: boolean

    When true, includes detailed provider information in the response. Default is false.

  • tracking
    Type: object · PlanSearchTrackingnullable

    Optional UTM parameters and referrer for tracking purposes. Parameters are appended to checkout and summary URLs.

    • queryParams
      Type: string | null

      UTM parameters to append to partner URLs (e.g., "utm_source=partner&utm_medium=api"). These parameters will be included in checkout and plan summary URLs.

    • referrer
      Type: string | null

      Referrer URL for tracking the source of the search request.

  • userId
    Type: string | null Format: uuid

    Optional. Associate this search with a specific user ID for tracking purposes. If provided, the search results will be linked to this user.