AKIS DEVELOPERS v1

CARFAX reports.
One clear integration.

Request a report by VIN, follow its progress and deliver the completed document through a private company API.

Server authenticationAsynchronous ordersUSD centsPDF or HTML
BASE URLhttps://akis-solutions.com/api/v1/carfax
Report ordering is paused during billing setup.

Authentication and account inspection can be integrated now. New paid orders require agreed company prices and prepaid funding. Check orderingEnabled before submitting a purchase.

01 · START HERE

Read your account first.

Use a company key supplied separately by AKIS. This read-only call returns the current prices, wallet and ordering status. Every monetary value is an integer number of USD cents.

Read-only account request · curlExample
BASE_URL="https://akis-solutions.com/api/v1/carfax"
# CARFAX_API_KEY is loaded from your server's secret store.
curl "$BASE_URL/account" \
  -H "Authorization: Bearer $CARFAX_API_KEY"
Account response · billing setup exampleExample
{
  "company": "carreport360.com",
  "currency": "USD",
  "prices": { "STORED": null, "FRESH": null },
  "orderingEnabled": false,
  "wallet": { "balance": 0, "held": 0, "available": 0 },
  "limits": {
    "requestsPerMinute": 60,
    "pendingReports": 5,
    "reportsPerDay": 100
  }
}
  1. 1
    Check availability and price

    Read GET /account. Proceed only when ordering is enabled and available credit covers the selected price.

  2. 2
    Save one purchase identifier

    Generate a UUID once and persist it with the VIN, mode and quoted price. Use it as the Idempotency-Key for every retry of this purchase.

  3. 3
    Order, then poll the returned ID

    Submit POST /reports. Save its response id; poll status initially every five seconds and back off if processing continues.

  4. 4
    Deliver the ready document

    When status is ready, download using the bearer endpoint or the five-minute signed link.

02 · AUTHENTICATION

A key for your backend.

Send the header below on account, order, status and direct-download requests. Store the credential in your server’s secret manager and exclude it from client bundles, analytics, URLs and logs.

Request headerExample
Authorization: Bearer <CARFAX_API_KEY>

Authenticated API calls must come from your server. Requests carrying browser Origin or Sec-Fetch-Site headers are rejected. A signed report URL can open the completed document in a browser without exposing the company key.

03 · API REFERENCE

Four endpoints. One order.

Append these paths to the base URL. JSON requests and responses use UTF-8. Account and order endpoints accept no query parameters.

GET/account

Read company pricing and wallet

Returns orderingEnabled, prices.STORED, prices.FRESH, wallet and limits. Prices can be null before setup. Wallet fields balance, held and available are USD cents.

POST/reports

Request a stored or fresh report

Requires Content-Type: application/json and a UUID in the Idempotency-Key header. The body contains exactly these three fields:

FieldRequired value
vinA 17-character VIN; letters I, O and Q are excluded. Input is trimmed and uppercased.
modeSTORED uses an available completed report. FRESH requests a new supplier report.
expectedPriceCentsThe selected price from GET /account, as a positive integer no larger than 100000000.
Order body · illustrative price, replace with your account quoteExample
{
  "vin": "1HGCM82633A004352",
  "mode": "FRESH",
  "expectedPriceCents": 200
}

The example’s 200 cents is illustrative. Company prices are agreed separately.

Full order request · only after billing activationExample
# Replace 200 with the current FRESH quote from GET /account.
# Replace the example UUID with your saved purchase UUID.
# Keep the same UUID and body for retries of this purchase.
curl "$BASE_URL/reports" \
  -X POST \
  -H "Authorization: Bearer $CARFAX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 11111111-2222-4333-8444-555555555555" \
  --data '{"vin":"1HGCM82633A004352","mode":"FRESH","expectedPriceCents":200}'

A new pending order returns HTTP 202. A completed or failed result, including an idempotent replay, can return 200. Save the returned id, which can refer to a matching existing order. A stored request returns 404 if no completed stored report is available.

GET/reports?id={id}

Read status and renew a download link

Send the request ID returned by the order endpoint. Inspect status on every response: HTTP 200 alone does not mean a document is ready. Pending responses include Retry-After: 5.

Processing order responseExample
{
  "id": "11111111-2222-4333-8444-555555555555",
  "vin": "1HGCM82633A004352",
  "mode": "FRESH",
  "status": "processing",
  "priceCents": 200,
  "currency": "USD",
  "createdAt": "2026-01-01T12:00:00.000Z",
  "updatedAt": "2026-01-01T12:00:05.000Z",
  "error": null,
  "report": null
}

A ready response replaces report: null with url, expiresAt, mimeType and retrievedAt. A new status request issues a new five-minute signed URL.

GET/report?id={id}

Download the completed document

Use the company bearer header to fetch the file directly, or open the signed report.url before expiresAt. Signed URLs include an opaque ticket parameter and must be treated as private access credentials.

Delivery returns application/pdf or cleaned text/html. Inspect Content-Type and Content-Disposition when saving the file. Document size is limited to 15 MiB. PDF conversion and extracted vehicle-history JSON are outside this contract.

04 · REPORT LIFECYCLE

Follow the status, not the clock.

Reports are acquired asynchronously. Supplier processing has no promised completion time. Your application’s polling timeout does not cancel an accepted order.

queuedprocessingreadyTerminal alternative: failed
StatusMeaningClient action
queuedThe order is waiting for acquisition.Keep its ID and poll.
processingThe supplier or document validation is still working.Back off polling; retain the original order.
readyA completed report version is validated and available.Download the document.
failedThe order could not be delivered; its reserved credit is released.Stop polling and inspect error.

Keep polling the original order when processing takes longer than expected. A new fresh purchase can incur a new charge. The API never automatically places a replacement paid supplier order.

05 · BILLING & RETRIES

One accepted purchase.
One final debit.

01

Reserve

An accepted order holds its quoted price against prepaid available credit while it is pending.

02

Validate

A supplier acknowledgement is followed by document completion and validation.

03

Settle

A validated ready report is debited once. Failed delivery releases the reservation.

  • Reuse the same UUID after a lost response or network timeout. Once a key is accepted, changing the VIN, mode or quoted price under that key returns 409 IDEMPOTENCY_CONFLICT.
  • Matching pending requests for the same VIN reuse the pending order. Different pending modes or prices return 409 PENDING_REQUEST_CONFLICT.
  • An already owned STORED report reopens without another debit. The returned order retains its original purchase mode and priceCents; that field is not a new charge on replay.
  • A price change returns 409 PRICE_CHANGED. Read the account again and explicitly approve the new quote before making a new purchase.
  • An interrupted submission with no supplier operation fails after five minutes from creation or its first submission start. Retries do not extend that reservation indefinitely.

New orders are currently paused until company pricing and prepaid funding are agreed. Existing order status and completed-document retrieval remain available to authorized accounts. Monthly invoicing is not configured.

06 · LIMITS & ERRORS

Build for predictable retries.

60API requests / minute
5Pending reports
100New orders / UTC day

The request-rate limit is shared across the company account, including signed-link downloads. The daily order limit resets at midnight UTC and includes failed orders. Replays and reopens reuse their existing order. JSON request bodies are limited to 8 KiB.

JSON error envelopeExample
{
  "error": {
    "code": "ORDERING_DISABLED",
    "message": "Report ordering is disabled until company pricing and billing are configured."
  }
}
HTTPTypical causeNext step
400Invalid VIN, mode, price, UUID or parameters.Correct the request.
401Invalid company key or expired signed link.Check the key, or renew the link through status.
403Disabled ordering/account, or browser API request.Check account activation and server integration.
404Unavailable stored report or inaccessible request/file.Check the request ID, ownership and readiness.
409Price, idempotency, pending-request or balance conflict.Review the error code and existing account/order.
413 / 415Oversized request/file or wrong request media type.Keep within size limits; send JSON.
429Request rate or report limit reached.Honor Retry-After: 60; also check pending/day limits.
503 / 504Service unavailable or GATEWAY_TIMEOUT.Back off; retain the original purchase key and payload.

After a POST timeout or gateway error, an order may already exist. If you have its ID, poll that order. Otherwise, retry the original request with the same saved UUID and unchanged payload after backoff.

A one-minute retry delay does not reset a daily report cap. Wait for the relevant limit to clear or contact AKIS account support.

07 · INTEGRATION FILES

Start with the contract.

JavaScript client · read-only connection checkExample
import { CarfaxClient } from './carfax-client.mjs';

const client = new CarfaxClient({
  apiKey: process.env.CARFAX_API_KEY,
  baseUrl: 'https://akis-solutions.com/api/v1/carfax'
});

const account = await client.getAccount();
console.log({
  orderingEnabled: account.orderingEnabled,
  prices: account.prices
});

The client exposes getAccount(), requestReport(), getReport(), waitForReport() and downloadReport(). requestReport() takes an explicitly supplied UUID. Polling is bounded and opt-in; purchases are not automatically retried.

Message us
AKIS Solutions monogram
AKIS SOLUTIONS

Custom software, business systems and vehicle services.

Loading your page…

QUICK TIP

Custom software, business systems and vehicle services.