For AI agents
Vehicle History by VIN lets an assistant quote one report, send the customer to pay, and then read the report. The customer pays. The assistant does not.
Last updated October 2026
What this API is for
Vehicle History by VIN sells one vehicle history report at a time for $9.99. An assistant can quote that price, send the customer to pay, and then read the finished report as JSON or Markdown.
The customer pays on Stripe Checkout. The agent must not pay for the customer. The agent must not ask for, see, or send a card number, expiry date, or security code. Card data never passes through this API.
Use our MCP server
Vehicle History by VIN serves a public MCP endpoint at https://www.vehiclehistorybyvin.com/mcp. The transport is stateless Streamable HTTP (JSON-RPC 2.0). There is no API key and no session. The customer still pays on Stripe Checkout. The assistant must not pay.
Tools: get_report_quote prices one VIN, create_report_checkout returns a hosted checkout URL for the human to open, and get_report reads the order and, after payment, the report as JSON or Markdown. Show the checkout URL to the human, ask them to pay, then poll get_report.
Add it in Claude, ChatGPT, or another MCP client as a remote server. No authentication. Config: {"mcpServers":{"vehicle-history-by-vin":{"url":"https://www.vehiclehistorybyvin.com/mcp"}}}
A shorter page for this same flow is https://www.vehiclehistorybyvin.com/vin-check-api-for-ai-agents.
Exact flow
1. POST https://www.vehiclehistorybyvin.com/api/agent/quote with JSON {"vin":"<17-character VIN>"}. Show the customer the price, what the report includes, what it does not include, and the refund policy from that response. A quote is not a purchase and does not show this VIN's history.
2. Get an explicit yes from the customer before opening checkout. Do not continue on a maybe.
3. POST https://www.vehiclehistorybyvin.com/api/agent/checkout with JSON {"vin":"<VIN>","email":"<optional>","source":"<optional agent name>"}. Send the customer to checkout_url. They pay on Stripe. If email is omitted, Stripe Checkout asks for it.
4. Poll status_url until status is ready, failed, or refunded. status_url has no token. Send report_token from the checkout that created the order as the X-Report-Token header or as Authorization: Bearer. A reused checkout link does not include the token.
5. Read the report as JSON, or as Markdown with ?format=markdown or Accept: text/markdown. Summarize only what the report contains. The report includes a how_to_summarize field. Do not invent records, prices, or mileage.
6. The private HTML report is report_page_url. The report is pulled and shown in the browser as soon as Stripe confirms payment. Some payment methods take longer to clear; the report is pulled when the payment confirms, not before. If you leave an email address, we also email one private link. The report is on screen either way.
What a report includes
A paid report can include Title brands, Odometer, Accidents, Theft, Liens, Impounds, Prior listings, Model recalls, Report brief, when those records were reported for the VIN. NHTSA recall campaigns, safety ratings, and EPA figures are labelled as model-year information rather than facts about this VIN. Listing records are added after payment when that source returns them. Empty categories stay empty. A report lists what was reported. It is not an inspection. Recall campaigns listed for this model year, not checked against this VIN.
NMVTIS on this report covers title records, brand checks, junk and salvage records, and odometer readings. Accident, theft, lien, impound, and sale records, when they were reported, come from the data provider's other sources, not from NMVTIS.
Prior listings and photos are added after payment when the listing-data source returns them. They are not part of the free preview and they are not NMVTIS records.
Recall campaigns listed for this model year, not checked against this VIN. NHTSA safety ratings and EPA figures, when shown, are model-year information, not a measurement of this VIN.
A report is not a pre-purchase inspection, a warranty, a title guarantee, or legal or financial advice. It does not include service or maintenance history. It is not proof the vehicle is safe or undamaged. Model-year safety and fuel figures, when shown, are about that model year, not a measurement of this VIN. Records nobody filed are not in the report. Reports may not be used for credit, insurance, employment, or tenancy decisions.
Refunds
Because a report is delivered online as soon as payment is confirmed and cannot be returned, sales are final once a report has been delivered. We will refund you in full when we charged you but could not deliver a report at all, when no records came back for your VIN (the report is headed "No usable history records came back for this VIN."), or when you were charged more than once for the same VIN in error. Email [email protected] with your order reference.
Limits and errors
Quote and checkout are rate limited per IP and per VIN. Those counters are shared across servers, and the MCP tools use the same limits. New checkouts are also capped per VIN, then per IP, then for the whole site. On the REST routes, a 429 response includes Retry-After. An MCP tool error, including a rate limit, is HTTP 200 with isError true. The same rate-limit headers are set, the wait is in the tool text, and _meta.retryAfterSeconds carries that wait in seconds. An open checkout is reused only for the same email and the same caller; that response does not include the report token. A checkout with no email is never reused. Callers with no client IP share a smaller limit. Request bodies are limited to 4 KB on the REST routes. A VIN that fails the check digit is rejected and does not create an order.
If payment or the records service is not configured, the REST quote and checkout routes return 503. If the shared checkout limiter cannot be read, REST checkout returns 503 and quote still answers. If caller keys cannot be hashed, the REST routes return 503. The same conditions on the MCP tools are HTTP 200 with isError true and the temporarily-unavailable text. They do not invent a report.
The machine-readable description is https://www.vehiclehistorybyvin.com/openapi.json. The citation guide is https://www.vehiclehistorybyvin.com/llms.txt.
Versioning and deprecation
Versioning and deprecation: the current version is 1.0.0. Changes are additive. Breaking changes get a new schema_version and at least 90 days notice before removal. URLs do not change.
Contact
Customer support for Vehicle History by VIN is [email protected]. For a report someone already bought, include the order reference from checkout. Do not send card numbers by email.
Home: https://www.vehiclehistorybyvin.com/
VIN check API for AI agents · OpenAPI description · Guide for AI systems · Contact · Home