DealScore Quote Check API

The Quote Check API from DealScore — 1 operation(s) for quote check.

Operations 1

POST /api/quote-check Check a dealer quote #

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/cardealscore-com:cardealscore-com-quote-check-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

cardealscore-com-quote-check-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DealScore Quote Check API
  version: 1.0.0
  summary: Score a used-car asking price, explain a grade, and check a dealer quote.
servers:
- url: https://cardealscore.com
tags:
- name: Quote Check
paths:
  /api/quote-check:
    post:
      operationId: checkQuote
      summary: Check a dealer quote
      description: Grade a car dealer's quote from A to F against its own MSRP, invoice, and fees. Send paste (the quote text), or selling_price and msrp, or both. A typed field wins over the same number in paste, and typed lines add to pasted lines. With no credential you get 1 free check per browser, marked by the ds_quote_free cookie. A session, API key, or OAuth token gives 3 checks per user per UTC month, shared across keys. A presented key or bearer that does not resolve is a 401. Neither the quote text nor the full VIN is stored.
      security:
      - {}
      - apiKey: []
      - bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: https://json-schema.org/draft/2020-12/schema
              type: object
              properties:
                paste:
                  description: The dealer quote as text. Used for this check only and never stored.
                  type: string
                  maxLength: 20000
                selling_price:
                  description: Selling price in dollars.
                  type: number
                  exclusiveMinimum: 0
                  maximum: 10000000
                msrp:
                  description: MSRP in dollars.
                  type: number
                  exclusiveMinimum: 0
                  maximum: 10000000
                invoice:
                  description: Dealer invoice in dollars.
                  type: number
                  exclusiveMinimum: 0
                  maximum: 10000000
                year:
                  type: integer
                  minimum: 1980
                  maximum: 2027
                make:
                  type: string
                  minLength: 1
                  maxLength: 60
                model:
                  type: string
                  minLength: 1
                  maxLength: 60
                trim:
                  type: string
                  minLength: 1
                  maxLength: 60
                vin:
                  type: string
                  pattern: ^[A-HJ-NPR-Z0-9]{17}$
                lines:
                  description: Fees and add-ons in dollars. Set kind when known. Otherwise the label decides.
                  maxItems: 40
                  type: array
                  items:
                    type: object
                    properties:
                      label:
                        type: string
                        minLength: 1
                        maxLength: 80
                      amount:
                        type: number
                        minimum: 0
                        maximum: 10000000
                      kind:
                        type: string
                        enum:
                        - doc_fee
                        - dealer_addon
                        - gap
                        - service_contract
                        - market_adjustment
                    required:
                    - label
                    - amount
                    additionalProperties: false
              additionalProperties: false
      responses:
        '200':
          description: Graded quote.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteReport'
          headers:
            Set-Cookie:
              description: ds_quote_free=1 on a graded check with no credential.
              schema:
                type: string
        '400':
          description: Invalid JSON body, a body that failed validation, or a quote with no msrp or selling_price after the paste and the fields are merged.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/InvalidJson'
                - $ref: '#/components/schemas/ValidationFailed'
                - $ref: '#/components/schemas/QuoteIncomplete'
        '401':
          description: A presented API key or bearer token did not resolve.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '429':
          description: The free check or this month's checks are used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteQuotaExceeded'
        '503':
          description: Quote checks cannot be recorded right now.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteCheckUnavailable'
      tags:
      - Quote Check
components:
  schemas:
    InvalidJson:
      type: object
      additionalProperties: false
      required:
      - error
      properties:
        error:
          const: Invalid JSON body
    ValidationFailed:
      type: object
      additionalProperties: false
      required:
      - error
      - details
      properties:
        error:
          const: Validation failed
        details:
          type: object
          additionalProperties: false
          required:
          - formErrors
          - fieldErrors
          properties:
            formErrors:
              type: array
              items:
                type: string
            fieldErrors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
    Unauthorized:
      type: object
      additionalProperties: false
      required:
      - error
      - message
      - get_key_url
      - docs_url
      properties:
        error:
          const: Unauthorized
        message:
          const: 'Provide a valid x-api-key header or Authorization: Bearer <key>'
        get_key_url:
          const: https://cardealscore.com/login?next=%2Fkeys&from=api_401
        docs_url:
          const: https://cardealscore.com/docs/api#get-a-key
    QuoteQuotaExceeded:
      type: object
      additionalProperties: false
      required:
      - error
      - limit
      - resets_at
      properties:
        error:
          const: quote_quota_exceeded
        limit:
          type: integer
        resets_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Start of the next UTC month for a signed-in caller. null for the free check.
    QuoteCheckUnavailable:
      type: object
      additionalProperties: false
      required:
      - error
      properties:
        error:
          const: Quote check unavailable
    QuoteReport:
      type: object
      additionalProperties: false
      required:
      - grade
      - price_band
      - flags
      - pushback
      - vehicle
      properties:
        grade:
          enum:
          - A
          - B
          - C
          - D
          - E
          - F
        price_band:
          type: object
          additionalProperties: false
          required:
          - position
          - selling_price
          - msrp
          - invoice
          - vs_msrp
          - vs_invoice
          - summary
          properties:
            position:
              enum:
              - at_or_below_invoice
              - below_msrp
              - at_msrp
              - above_msrp
            selling_price:
              type: number
            msrp:
              type: number
            invoice:
              type:
              - number
              - 'null'
            vs_msrp:
              type: number
              description: selling_price minus msrp. Negative is under MSRP.
            vs_invoice:
              type:
              - number
              - 'null'
            summary:
              type: string
        flags:
          type: array
          items:
            type: object
            additionalProperties: false
            required:
            - code
            - line
            - amount
            - severity
            - ask
            properties:
              code:
                type: string
              line:
                type: string
              amount:
                type: number
              severity:
                enum:
                - flag
                - red
              ask:
                type: string
        pushback:
          type: array
          maxItems: 5
          items:
            type: string
          description: Sentences to send the dealer. Empty when nothing is flagged.
        vehicle:
          type: object
          additionalProperties: false
          required:
          - year
          - make
          - model
          - trim
          - vin_prefix
          properties:
            year:
              type:
              - integer
              - 'null'
            make:
              type:
              - string
              - 'null'
            model:
              type:
              - string
              - 'null'
            trim:
              type:
              - string
              - 'null'
            vin_prefix:
              type:
              - string
              - 'null'
              pattern: ^[A-HJ-NPR-Z0-9]{9}$
              description: The first 9 characters of the VIN. Never the full VIN.
    QuoteIncomplete:
      type: object
      additionalProperties: false
      required:
      - error
      - missing
      properties:
        error:
          const: quote_incomplete
        missing:
          type: array
          minItems: 1
          items:
            enum:
            - msrp
            - selling_price
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: DealScore API key.
    bearer:
      type: http
      scheme: bearer
      description: API key in the Authorization header.
externalDocs:
  description: API reference
  url: https://cardealscore.com/docs/api