AutoFi Prequalification API

The Prequalification API from AutoFi — 1 operation(s) for prequalification.

Operations 1

POST /v1/prequalification Prequalification

Documentation

Specifications

Other Resources

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/autofi-prequalification-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

autofi-prequalification-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AutoFi Prequalification API
  description: "\n# Introduction\n Welcome to the AutoFi REST API. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.\n\n# HTTP Requests\n### Environments\nEnvironment | URL\n----------------|-------------\nTest Sandbox | https://api-uat.autofi.com\nProduction | https://api.autofi.com\n\n### Request Headers\n\nThe `Content-Type` header for `POST` and `PUT` requests should be set to `application/json` unless otherwise noted.\n\nHeader | Value\n----------------|-------------\nContent-Type | application/json\n\n### Response Headers\nHeader | Value\n----------------|-------------\nX-RateLimit-Limit | Request quota\nX-RateLimit-Reset | UNIX timestamp the request quota will be reset after exceeding it\nX-RateLimit-Remaining | Remaining requests in quota\nRetry-After | Time in seconds to retry after\nX-Response-Time | The time in milliseconds it took to respond to the request\n\n# HTTP Responses\nAutoFi uses standard HTTP response codes to indicate the success or failure of an API request. \n\n## Successful requests\nHTTP requests that are successfully processed returns `2xx` status codes.\n\n| Status code | Description |\n| -- | -- |\n| **200 OK** | The request was successfully processed and requested content is returned in the response body. |\n| **201 Created** | The request was successfully processed and a new resource was created. |\n| **204 No Content** | The request was successfully processed and the response body has no content. |\n\n## Failed Requests\nHTTP requests that are not successfully processed, due to a client or server error, returns `4xx` or `5xx` status codes respectively.\n\n### HTTP 4XX status codes\n| Status code | Description \n| -- | -- |\n| **400 Bad Request** | The request cannot be processed. Typically due to a malformed payload.\n| **401 Unauthorized** | The request has invalid credentials (token).\n| **403 Forbidden** | The request has insufficient privileges.\n| **404 Not Found** | The requested resource could not be found.\n| **405 Method Not Allowed** | The API does not allow this method.\n| **415 Unsupported Media Type** | The payload format is not supported. [AutoFi request headers](#request-headers).\n| **429 Too Many Requests** | There were too many request in a given amount of time.\n\n### Error response definition\nMost types of errors have the following structure:\n| field | Description \n| --- | --- \n| code | reference to the status code of the response\n| message | defines the error type \n| errors | contains an array of objects with the description for an error or multiple errors generated.\n\n### Error Types\n\n`4xx` Errors can be thrown for different reasons. The following section describes common shapes for the error objects returned.\n\n#### Validation Errors\nValidation errors return a `400` status code indicating a `Bad Request`.\n\n| Parameter type | Description \n| --- | --- \n| string | `dob`, `email`, `phone`, etc., have formats and possibly character restrictions which must be observed. e.g. `phone` must be a 10 character long string that contains only numbers.\n| number | `apr`, `downPayment`, `term`, etc., have range requirements which must be observed. e.g. `apr` must be a number between [0...1]. \n| integer | `timeInMonths`, `monthlyPayment`, `year`, etc., have range requirements which must be observed.  \n\n\n> #### Example Response `400 Bad Request`\n>  ```json\n> {\n>   \"code\": 400,\n>   \"message\": \"Validation Error\",\n>   \"errors\": [\n>       {\n>         \"description\": \"Required field \\\"applicant\\\" was not provided.\"\n>       },\n>       {\n>         \"description\": \"Field \\\"cosigner.email\\\" is invalid: io.\"\n>       }\n>   ]\n> }\n>  ```\n\n\n#### Authorization Errors\nAuthorization errors return a `401` status code indicating a `Unauthorized`.\nMost endpoints will return some of the following errors in case of an invalid\n(malformed or expired) or absent authorization token, indicating that a new \ntoken must be requested.\n\n> #### Example Response `401 `\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: invalid token\"\n> }\n>  ```\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: No authorization token was found\"\n> }\n>  ```\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: Format is Authorization: Bearer [token]\"\n> }\n>  ```\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: jwt malformed\"\n> }\n>  ```\n\n#### Not Found Errors\nNot Found errors return a `404` status code indicating a `Not Found`.\n\n> #### Example Response `404 Not found`\n>  ```json\n> {\n>     \"error\": \"Error: Not Found\"\n> }\n>  ```\n\n#### Rate Limiting\nIf the server is receiving an excessive amount of requests from a \nparticular user, it may return errors with a `429` status code \nindicating `Too many requests`.\n\n> #### Example Response `429 Too many requests`\n>  ```json\n> {\n>   \"code\": 429,\n>   \"message\": \"Account limit exceeded.\",\n> }\n>  ```\n\n\n### HTTP 5XX status codes\n| Http Status | Description |\n| -- | -- |\n| **500 Internal Server Error** | An unexpected error occurred, preventing successfully processing the request. |\n| **503 Service Unavailable** | An AutoFi service is unavailable, preventing successfully processing the request. |   \n\n> See the [Hypertext Transfer Protocol (HTTP)](https://datatracker.ietf.org/doc/html/rfc7231) or the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) for more details.\n\n### Error Type\n\n#### 503 Service Unavailable\nService unavailable error is returned when our servers is not available to process and return a response.\n\n> #### Example Response `503 service unavailable`\n>  ```json\n> {\n>   \"code\": 503,\n>   \"message\": \"Service Unavailable\",\n>   \"errors\": [\n>       {\n>         \"description\": \"Service Unavailable\"\n>       },\n>   ]\n> }\n>  ```\n"
  version: 1.0.0
  x-logo:
    url: https://app.autofi.com/images/email-autofi-logo.png
    backgroundColor: '#FFFFFF'
    altText: AutoFi
    href: /
servers:
- url: https://api.autofi.com
  description: Production server
- url: https://api-uat.autofi.com
  description: Sandbox server
security:
- bearerAuth: []
tags:
- name: Prequalification
paths:
  /v1/prequalification:
    post:
      security:
      - bearerAuth:
        - create:prequalification
      summary: Prequalification
      description: "Prequalification can be utilized to help identify how much the user can afford. \nThis endpoint provides the maximum monthly payment, maximum loan amount, and a credit score range.\n"
      tags:
      - Prequalification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - applicant
              properties:
                applicant:
                  type: object
                  required:
                  - name
                  - address
                  - phone
                  - email
                  - employmentIncome
                  properties:
                    name:
                      $ref: '#/components/schemas/ApplicantFullNameInput'
                    address:
                      required:
                      - street
                      - city
                      - state
                      - zip
                      type: object
                      properties:
                        street:
                          example: 1234 Main St
                          type: string
                        street2:
                          example: Apt B
                          type: string
                        city:
                          example: Madison
                          type: string
                        state:
                          example: WI
                          type: string
                        zip:
                          example: '53714'
                          type: string
                    phone:
                      type: string
                      example: '5554443333'
                      maxLength: 10
                      minLength: 10
                      pattern: ^[2-9][0-9]{9}$
                    email:
                      $ref: '#/components/schemas/EmailInput'
                    employmentIncome:
                      type: number
                      format: float
                      minimum: 0
                      example: 10000
                      description: Gross monthly income from employment.
      responses:
        '200':
          description: Prequalification successfully calculated.
          content:
            application/json:
              schema:
                type: object
                required:
                - prequalification
                properties:
                  prequalification:
                    type: object
                    properties:
                      maxLoanAmount:
                        description: The maximum loan that the applicant can afford.
                        type: number
                        format: float
                      maxMonthlyPayment:
                        description: The maximum monthly payment that the applicant can afford.
                        type: number
                        format: float
                      ficoRange:
                        description: Deprecated in favor of appropriately named `creditScoreRange` field.
                        deprecated: true
                        type: object
                        properties:
                          top:
                            type: integer
                          bottom:
                            type: integer
                      creditScoreRange:
                        type: object
                        properties:
                          top:
                            type: integer
                          bottom:
                            type: integer
        '400':
          $ref: '#/components/responses/BadRequestPrequal'
        '404':
          $ref: '#/components/responses/NotFoundPrequal'
        '503':
          $ref: '#/components/responses/ServiceUnavailablePrequal'
components:
  responses:
    NotFoundPrequal:
      description: NotFound
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/code'
              message:
                $ref: '#/components/schemas/message'
              errors:
                description: No credit record found for this user. The error description includes more details about the error.
                allOf:
                - $ref: '#/components/schemas/errors'
            example:
              code: 404
              message: Not Found
              errors:
              - description: No credit record found for this user
              - description: Credit Service returned "NoHit" response
              - description: Credit Service returned "Locked" credit report
              - description: Credit Service returned "Frozen" credit report
              - description: Credit Service returned "Deceased" credit report
              - description: Credit Service returned "No Information on Credit Report" credit report
    ServiceUnavailablePrequal:
      description: Service Unavailable
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/code'
              message:
                $ref: '#/components/schemas/message'
              errors:
                description: "These errors happen because the credit service was unable to handle the request.\nThe error description includes an error code that fall into the following categories:\n- Error code (7000, 7100, 7101, 7110) - Request failed by credit service.    \n- Error code (7002, 7200) - Credit bureau errors.\n- Error code (7003, 7199) - Credit service down.\n"
                allOf:
                - $ref: '#/components/schemas/errors'
            example:
              code: 503
              message: Service Unavailable
              errors:
              - description: Credit Service Unavailable (7000).
              - description: Credit Service Unavailable (7002).
              - description: Credit Service Unavailable (7003).
              - description: Credit Service Unavailable (7100).
              - description: Credit Service Unavailable (7101).
              - description: Credit Service Unavailable (7110).
              - description: Credit Service Unavailable (7199).
              - description: Credit Service Unavailable (7200).
    BadRequestPrequal:
      description: BadRequest
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/code'
              message:
                $ref: '#/components/schemas/message'
              errors:
                description: "Array of validation errors found in the payload that include general type validation as well as any issues with the data surfaced by the credit bureau:\n - Invalid Address\n - Required field not provided\n - Field can not be null\n - Field must be an object\n - Field is not a defined field\n - Field is invalid\n"
                allOf:
                - $ref: '#/components/schemas/errors'
            example:
              code: 400
              message: Bad Request
              errors:
              - description: 'Something went wrong: Invalid Address'
              - description: Required field "applicant" was not provided.
              - description: Field "applicant.phone" can not be null.
              - description: Field "applicant.name" must be an object.
              - description: Field "someName" is not a defined field.
              - description: 'Field "applicant.email" is invalid: Email cannot represent an invalid email address value: notAnEmailAddress.'
              - description: 'Field "applicant.employmentIncome" is invalid: Must be a float greater than or equal to 0.'
              - description: 'STREETNAME: Required Data Not Entered'
  schemas:
    ApplicantBaseNameInput:
      title: Name
      description: Names must start with one or more alphanumeric characters, and may be followed by one special character as long as that special character is followed by one or more alphanumeric characters. A name may also end with a period.
      type: object
      required:
      - first
      - last
      properties:
        first:
          description: First name
          example: Mrs. Jamie-Lynn
          type: string
          minLength: 1
          pattern: ^[a-zA-ZÀ-ÿ0-9#]+(([',. -]+[a-zA-ZÀ-ÿ0-9 ])?[a-zA-ZÀ-ÿ0-9 .-/#’&]*)*$
        last:
          description: Last name
          example: O'Rourke-Van Winkle
          type: string
          minLength: 1
          pattern: ^[a-zA-ZÀ-ÿ0-9#]+(([',. -]+[a-zA-ZÀ-ÿ0-9 ])?[a-zA-ZÀ-ÿ0-9 .-/#’&]*)*$
    ApplicantFullNameInput:
      allOf:
      - $ref: '#/components/schemas/ApplicantBaseNameInput'
      title: Name
      properties:
        middle:
          description: Middle name
          example: Alejandra
          type: string
        suffix:
          description: Suffix indicating generational title
          example: JR
          type: string
          enum:
          - JR
          - SR
          - I
          - II
          - III
          - IV
          - V
    code:
      type: integer
      description: HTTP status code.
    message:
      type: string
      description: HTTP status description.
    EmailInput:
      type: string
      example: fake@example.com
      format: email
      minLength: 1
      title: Email
      description: 'An email is an ASCII string separated into two parts by the @ symbol (local_part@domain). The local_part may contain uppercase (A-Z) and lowercase (a-z) ASCII characters, digits (0-9), special characters (+, -, _, !, #, $, %, &, , *, /, =, ?, ^, `, {, |, }, ~) and the . character. The domain part of an email may contain letters, digits, hyphens and periods. The top level domain (TLD) portion of the domain must also be published by IANA to be considered valid. See https://tools.ietf.org/html/rfc2822#section-3.4.1 for more information.'
    errors:
      type: array
      items:
        properties:
          description:
            type: string
            description: Error description.
  securitySchemes:
    bearerAuth:
      description: 'Get access to data while protecting your account credentials.

        '
      type: http
      scheme: bearer
      bearerFormat: Bearer {token}