docs.vin

history

The history noun — identity, lifecycle, events, and every capability as an anchored section: 14 capabilities, 0 live, 14 sandbox, 0 declared.

history is one of the estate's 317 automotive nouns — a job a car needs done. It carries 14 capabilities: 0 live, 14 sandbox, 0 declared · doors vhr.vin.

Identity

Nounhistory
PillarData (facets: 9 data · 3 services · 2 commerce)
Capabilities14 — 0 live · 14 sandbox · 0 declared
EntitiesVehicleRecord
Doorsvhr.vin
SDKVin.history.* from apis.vin
Address/catalog/history#{action} — the anchor IS the wire name minus history.

Events

The vocabulary this noun can append to the record — 6 past-tense, versioned event types, each linked to the capability that emits it:

Discover & read

report

history.report · GET /histories/report · gate none · sandbox · answers HistoryReport@1

The compiled history for one VIN. Like every capability, it answers the four-way envelope — the example below handles all four arms, because an agent that only handles OK is an agent that mistakes absence for failure.

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.report
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.report({"vin":"1FTER4FH1MLD12624"})
GET /histories/report
curl 'https://apis.vin/histories/report?vin=1FTER4FH1MLD12624'

Curated example — hand-written in overlays/history.report.mdx, typechecked against the SDK's answer types on every CI run; everything else in this section is generated.

import { history } from 'apis.vin'

const answer = await history.report({ vin: 'JM3KFBXY1S0597748' })

switch (answer.type) {
  case 'OK':
    // provenance travels with the payload — sandbox never masquerades
    if (answer.provenance?.simulated) console.log('simulated (sandbox mode)')
    console.log(answer.value)
    break
  case 'EMPTY':
    // the record truthfully has nothing — distinct from an error
    break
  case 'BLOCKED':
    // typed refusal: reason + field-level problems, never a silent 404
    console.log(answer.reason, answer.problems)
    break
  case 'OFFER':
    // the estate wants a ceremony first; the affordance is invokable
    await answer.handoff?.({ openBrowser: true })
    break
}

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.222Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryReport@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "reportRef": "HS-9212CCE9",
    "asOf": "2026-08-10",
    "flags": {
      "salvage": false,
      "titleBrand": false,
      "floodDamage": false,
      "frameDamage": false,
      "previouslyCanadian": false,
      "liveryUse": false,
      "lemonBuyback": false,
      "junk": false,
      "fire": false,
      "hail": false,
      "rebuilt": false,
      "odometerRollback": false,
      "theftRecovery": false,
      "totalLoss": false,
      "grayMarket": false,
      "manufacturerBuyback": false
    },
    "titleBrands": [],
    "ownerCount": 1,
    "odometer": {
      "lastReading": 71466,
      "rollbackSuspected": false,
      "readings": [
        {
          "date": "2022-01-15",
          "mileage": 17867,
          "source": "title"
        },
        {
          "date": "2023-02-15",
          "mileage": 35733,
          "source": "service"
        },
        {
          "date": "2024-03-15",
          "mileage": 53600,
          "source": "auction"
        },
        {
          "date": "2025-04-15",
          "mileage": 71466,
          "source": "inspection"
        }
      ]
    },
    "priceHistory": [
      {
        "date": "2024-06-01",
        "listedPrice": {
          "amount": "1914300",
          "currency": "USD"
        },
        "channel": "private",
        "sourceRef": "HS-P-1B1B2AF5"
      },
      {
        "date": "2025-06-01",
        "listedPrice": {
          "amount": "1208300",
          "currency": "USD"
        },
        "channel": "auction",
        "sourceRef": "HS-P-1A1B2962"
      },
      {
        "date": "2026-06-01",
        "listedPrice": {
          "amount": "3502400",
          "currency": "USD"
        },
        "channel": "private",
        "sourceRef": "HS-P-191B27CF"
      }
    ],
    "events": [
      {
        "date": "2019-03-12",
        "type": "title",
        "description": "Title issued"
      },
      {
        "date": "2019-03-20",
        "type": "registration",
        "description": "First registration"
      },
      {
        "date": "2023-11-09",
        "type": "service",
        "description": "Routine service recorded"
      }
    ],
    "confidence": "high"
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "reportRef": "HS-9212CCE9",
    "asOf": "2026-08-10",
    "flags": {
      "salvage": false,
      "titleBrand": false,
      "floodDamage": false,
      "frameDamage": false,
      "previouslyCanadian": false,
      "liveryUse": false,
      "lemonBuyback": false,
      "junk": false,
      "fire": false,
      "hail": false,
      "rebuilt": false,
      "odometerRollback": false,
      "theftRecovery": false,
      "totalLoss": false,
      "grayMarket": false,
      "manufacturerBuyback": false
    },
    "titleBrands": [],
    "ownerCount": 1,
    "odometer": {
      "lastReading": 71466,
      "rollbackSuspected": false,
      "readings": [
        {
          "date": "2022-01-15",
          "mileage": 17867,
          "source": "title"
        },
        {
          "date": "2023-02-15",
          "mileage": 35733,
          "source": "service"
        },
        {
          "date": "2024-03-15",
          "mileage": 53600,
          "source": "auction"
        },
        {
          "date": "2025-04-15",
          "mileage": 71466,
          "source": "inspection"
        }
      ]
    },
    "priceHistory": [
      {
        "date": "2024-06-01",
        "listedPrice": {
          "amount": "1914300",
          "currency": "USD"
        },
        "channel": "private",
        "sourceRef": "HS-P-1B1B2AF5"
      },
      {
        "date": "2025-06-01",
        "listedPrice": {
          "amount": "1208300",
          "currency": "USD"
        },
        "channel": "auction",
        "sourceRef": "HS-P-1A1B2962"
      },
      {
        "date": "2026-06-01",
        "listedPrice": {
          "amount": "3502400",
          "currency": "USD"
        },
        "channel": "private",
        "sourceRef": "HS-P-191B27CF"
      }
    ],
    "events": [
      {
        "date": "2019-03-12",
        "type": "title",
        "description": "Title issued"
      },
      {
        "date": "2019-03-20",
        "type": "registration",
        "description": "First registration"
      },
      {
        "date": "2023-11-09",
        "type": "service",
        "description": "Routine service recorded"
      }
    ],
    "confidence": "high"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "history-source-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  },
  "connect": {
    "type": "OFFER",
    "kind": "connect",
    "reason": "CONNECTION_ABSENT",
    "portClass": "vehicle-history",
    "state": "absent",
    "url": "https://integrates.vin/connect/vehicle-history",
    "message": "history.report is live via connection — certified, connect to activate: complete the vehicle-history link ceremony at https://integrates.vin/connect/vehicle-history. The credential vault (auth.vin) holds the token, and the same call answers simulated:false — activation is the token, never a deploy."
  }
}

Gotchas — curated field notes; the reference above stays generated.

  • EMPTY, BLOCKED, and OFFER are three different kinds of "no payload" and they never blend: absence, refusal, and a ceremony-first affordance each arrive as their own arm of the union.
  • answer.handoff on an OFFER is invokable — calling it drives the sign/authorize ceremony — and its toJSON() restores the plain wire affordance, so logging an answer never leaks a live closure.

monitor

history.monitor · POST /histories/monitor · gate offer · sandbox · answers HistoryMonitor@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsHistory.monitored@1 · Vehicle.monitored@1.

the SDK — history.monitor
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.monitor({"vin":"1FTER4FH1MLD12624"})
POST /histories/monitor
curl -X POST https://apis.vin/histories/monitor \
  -H 'content-type: application/json' \
  -d '{"vin":"1FTER4FH1MLD12624"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.222Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryMonitor@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "watch": {
      "status": "armed",
      "id": "HW-f31f155b",
      "nextCheckDate": "2026-09-09"
    }
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "watch": {
      "status": "armed",
      "id": "HW-f31f155b",
      "nextCheckDate": "2026-09-09"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [
    "Vehicle.monitored@1"
  ],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

subscribe

history.subscribe · POST /histories/subscribe · gate offer · sandbox · answers HistorySubscribe@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsHistory.subscribed@1.

the SDK — history.subscribe
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.subscribe({"vin":"1FTER4FH1MLD12624"})
POST /histories/subscribe
curl -X POST https://apis.vin/histories/subscribe \
  -H 'content-type: application/json' \
  -d '{"vin":"1FTER4FH1MLD12624"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.229Z · HTTP 200
{
  "type": "OK",
  "answers": "HistorySubscribe@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "subscription": {
      "status": "active",
      "id": "HSUB-d858cfd9",
      "termMonths": 12,
      "feeCents": 4500,
      "currency": "USD",
      "renewsOn": "2027-08-10"
    }
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "subscription": {
      "status": "active",
      "id": "HSUB-d858cfd9",
      "termMonths": 12,
      "feeCents": 4500,
      "currency": "USD",
      "renewsOn": "2027-08-10"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

buy

history.buy · POST /histories/buy · gate offer · sandbox · answers HistoryBuy@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsHistory.purchased@1.

the SDK — history.buy
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.buy({"vin":"1FTER4FH1MLD12624"})
POST /histories/buy
curl -X POST https://apis.vin/histories/buy \
  -H 'content-type: application/json' \
  -d '{"vin":"1FTER4FH1MLD12624"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.209Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryBuy@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "purchase": {
      "status": "purchased",
      "reportRef": "HS-9212CCE9",
      "amountCents": 4500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "purchase": {
      "status": "purchased",
      "reportRef": "HS-9212CCE9",
      "amountCents": 4500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

attest

history.attest · POST /histories/attest · gate offer · sandbox · answers HistoryAttest@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsHistory.attested@1.

the SDK — history.attest
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.attest({"vin":"1FTER4FH1MLD12624"})
POST /histories/attest
curl -X POST https://apis.vin/histories/attest \
  -H 'content-type: application/json' \
  -d '{"vin":"1FTER4FH1MLD12624"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.191Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryAttest@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "attestation": {
      "reportRef": "HS-9212CCE9",
      "contentHash": "00e9616c",
      "attestedAt": "2026-08-10",
      "confidence": "high"
    }
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "attestation": {
      "reportRef": "HS-9212CCE9",
      "contentHash": "00e9616c",
      "attestedAt": "2026-08-10",
      "confidence": "high"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

accidents

history.accidents · GET /histories/accidents · gate none · sandbox · answers HistoryAccidents@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.accidents
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.accidents({"vin":"1FTER4FH1MLD12624"})
GET /histories/accidents
curl 'https://apis.vin/histories/accidents?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.191Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryAccidents@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "reportRef": "HS-9212CCE9",
    "asOf": "2026-08-10",
    "accidents": [],
    "count": 0,
    "frameDamage": false,
    "salvage": false,
    "totalLoss": false,
    "confidence": "high"
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "reportRef": "HS-9212CCE9",
    "asOf": "2026-08-10",
    "accidents": [],
    "count": 0,
    "frameDamage": false,
    "salvage": false,
    "totalLoss": false,
    "confidence": "high"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "history-source-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  },
  "connect": {
    "type": "OFFER",
    "kind": "connect",
    "reason": "CONNECTION_ABSENT",
    "portClass": "vehicle-history",
    "state": "absent",
    "url": "https://integrates.vin/connect/vehicle-history",
    "message": "history.accidents is live via connection — certified, connect to activate: complete the vehicle-history link ceremony at https://integrates.vin/connect/vehicle-history. The credential vault (auth.vin) holds the token, and the same call answers simulated:false — activation is the token, never a deploy."
  }
}

branding

history.branding · GET /histories/branding · gate none · sandbox · answers HistoryBranding@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.branding
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.branding({"vin":"1FTER4FH1MLD12624"})
GET /histories/branding
curl 'https://apis.vin/histories/branding?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.191Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryBranding@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "branding": {
      "branded": false,
      "brands": [],
      "salvage": false,
      "totalLoss": false,
      "basis": "one-history-law"
    }
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "branding": {
      "branded": false,
      "brands": [],
      "salvage": false,
      "totalLoss": false,
      "basis": "one-history-law"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

compile

history.compile · POST /histories/compile · gate offer · sandbox · answers HistoryCompile@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsHistory.compiled@1.

the SDK — history.compile
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.compile({"vin":"1FTER4FH1MLD12624"})
POST /histories/compile
curl -X POST https://apis.vin/histories/compile \
  -H 'content-type: application/json' \
  -d '{"vin":"1FTER4FH1MLD12624"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.222Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryCompile@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "report": {
      "reportRef": "HS-9212CCE9",
      "asOf": "2026-08-10",
      "flags": {
        "salvage": false,
        "titleBrand": false,
        "floodDamage": false,
        "frameDamage": false,
        "previouslyCanadian": false,
        "liveryUse": false,
        "lemonBuyback": false,
        "junk": false,
        "fire": false,
        "hail": false,
        "rebuilt": false,
        "odometerRollback": false,
        "theftRecovery": false,
        "totalLoss": false,
        "grayMarket": false,
        "manufacturerBuyback": false
      },
      "titleBrands": [],
      "ownerCount": 1,
      "odometer": {
        "lastReading": 71466,
        "rollbackSuspected": false,
        "readings": [
          {
            "date": "2022-01-15",
            "mileage": 17867,
            "source": "title"
          },
          {
            "date": "2023-02-15",
            "mileage": 35733,
            "source": "service"
          },
          {
            "date": "2024-03-15",
            "mileage": 53600,
            "source": "auction"
          },
          {
            "date": "2025-04-15",
            "mileage": 71466,
            "source": "inspection"
          }
        ]
      },
      "events": [
        {
          "date": "2019-03-12",
          "type": "title",
          "description": "Title issued"
        },
        {
          "date": "2019-03-20",
          "type": "registration",
          "description": "First registration"
        },
        {
          "date": "2023-11-09",
          "type": "service",
          "description": "Routine service recorded"
        }
      ],
      "confidence": "high"
    },
    "basis": "one-history-law"
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "report": {
      "reportRef": "HS-9212CCE9",
      "asOf": "2026-08-10",
      "flags": {
        "salvage": false,
        "titleBrand": false,
        "floodDamage": false,
        "frameDamage": false,
        "previouslyCanadian": false,
        "liveryUse": false,
        "lemonBuyback": false,
        "junk": false,
        "fire": false,
        "hail": false,
        "rebuilt": false,
        "odometerRollback": false,
        "theftRecovery": false,
        "totalLoss": false,
        "grayMarket": false,
        "manufacturerBuyback": false
      },
      "titleBrands": [],
      "ownerCount": 1,
      "odometer": {
        "lastReading": 71466,
        "rollbackSuspected": false,
        "readings": [
          {
            "date": "2022-01-15",
            "mileage": 17867,
            "source": "title"
          },
          {
            "date": "2023-02-15",
            "mileage": 35733,
            "source": "service"
          },
          {
            "date": "2024-03-15",
            "mileage": 53600,
            "source": "auction"
          },
          {
            "date": "2025-04-15",
            "mileage": 71466,
            "source": "inspection"
          }
        ]
      },
      "events": [
        {
          "date": "2019-03-12",
          "type": "title",
          "description": "Title issued"
        },
        {
          "date": "2019-03-20",
          "type": "registration",
          "description": "First registration"
        },
        {
          "date": "2023-11-09",
          "type": "service",
          "description": "Routine service recorded"
        }
      ],
      "confidence": "high"
    },
    "basis": "one-history-law"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

lienEvents

history.lienEvents · GET /histories/lien-events · gate none · sandbox · answers HistoryLienEvents@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.lienEvents
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.lienEvents({"vin":"1FTER4FH1MLD12624"})
GET /histories/lien-events
curl 'https://apis.vin/histories/lien-events?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.222Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryLienEvents@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "lien": {
      "id": "LIEN-f52e6efe",
      "standing": "perfected",
      "lienholder": {
        "fsId": "F00SET",
        "name": "Southeast Toyota Finance"
      }
    },
    "events": [
      {
        "date": "2022-08-11",
        "type": "lien",
        "description": "Lien recorded"
      }
    ]
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "lien": {
      "id": "LIEN-f52e6efe",
      "standing": "perfected",
      "lienholder": {
        "fsId": "F00SET",
        "name": "Southeast Toyota Finance"
      }
    },
    "events": [
      {
        "date": "2022-08-11",
        "type": "lien",
        "description": "Lien recorded"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

odometerEvents

history.odometerEvents · GET /histories/odometer-events · gate none · sandbox · answers HistoryOdometerEvents@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.odometerEvents
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.odometerEvents({"vin":"1FTER4FH1MLD12624"})
GET /histories/odometer-events
curl 'https://apis.vin/histories/odometer-events?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.222Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryOdometerEvents@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "odometer": {
      "lastReading": 71466,
      "rollbackSuspected": false,
      "readings": [
        {
          "date": "2022-01-15",
          "mileage": 17867,
          "source": "title"
        },
        {
          "date": "2023-02-15",
          "mileage": 35733,
          "source": "service"
        },
        {
          "date": "2024-03-15",
          "mileage": 53600,
          "source": "auction"
        },
        {
          "date": "2025-04-15",
          "mileage": 71466,
          "source": "inspection"
        }
      ]
    },
    "basis": "one-mileage-law"
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "odometer": {
      "lastReading": 71466,
      "rollbackSuspected": false,
      "readings": [
        {
          "date": "2022-01-15",
          "mileage": 17867,
          "source": "title"
        },
        {
          "date": "2023-02-15",
          "mileage": 35733,
          "source": "service"
        },
        {
          "date": "2024-03-15",
          "mileage": 53600,
          "source": "auction"
        },
        {
          "date": "2025-04-15",
          "mileage": 71466,
          "source": "inspection"
        }
      ]
    },
    "basis": "one-mileage-law"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

ownershipCount

history.ownershipCount · GET /histories/ownership-count · gate none · sandbox · answers HistoryOwnershipCount@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.ownershipCount
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.ownershipCount({"vin":"1FTER4FH1MLD12624"})
GET /histories/ownership-count
curl 'https://apis.vin/histories/ownership-count?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.222Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryOwnershipCount@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "ownership": {
      "count": 1,
      "basis": "one-history-law"
    }
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "ownership": {
      "count": 1,
      "basis": "one-history-law"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

serviceRecords

history.serviceRecords · GET /histories/service-records · gate none · sandbox · answers HistoryServiceRecords@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.serviceRecords
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.serviceRecords({"vin":"1FTER4FH1MLD12624"})
GET /histories/service-records
curl 'https://apis.vin/histories/service-records?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.229Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryServiceRecords@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "visits": [
      {
        "date": "2025-06-13",
        "mileage": 52500,
        "operation": "interval-service",
        "servicer": {
          "kind": "independent-shop"
        }
      },
      {
        "date": "2025-11-27",
        "mileage": 60000,
        "operation": "interval-service",
        "servicer": {
          "kind": "independent-shop"
        }
      },
      {
        "date": "2026-05-12",
        "mileage": 67500,
        "operation": "interval-service",
        "servicer": {
          "kind": "dealer-service-drive",
          "dealerId": "DLR-b9066ade"
        }
      }
    ],
    "count": 3,
    "basis": "one-service-drawer"
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "visits": [
      {
        "date": "2025-06-13",
        "mileage": 52500,
        "operation": "interval-service",
        "servicer": {
          "kind": "independent-shop"
        }
      },
      {
        "date": "2025-11-27",
        "mileage": 60000,
        "operation": "interval-service",
        "servicer": {
          "kind": "independent-shop"
        }
      },
      {
        "date": "2026-05-12",
        "mileage": 67500,
        "operation": "interval-service",
        "servicer": {
          "kind": "dealer-service-drive",
          "dealerId": "DLR-b9066ade"
        }
      }
    ],
    "count": 3,
    "basis": "one-service-drawer"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

theftEvents

history.theftEvents · GET /histories/theft-events · gate none · sandbox · answers HistoryTheftEvents@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.theftEvents
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.theftEvents({"vin":"1FTER4FH1MLD12624"})
GET /histories/theft-events
curl 'https://apis.vin/histories/theft-events?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.229Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryTheftEvents@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "theftRecovery": false,
    "events": []
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "theftRecovery": false,
    "events": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

titleEvents

history.titleEvents · GET /histories/title-events · gate none · sandbox · answers HistoryTitleEvents@1

FieldTypeRequiredNotes
vinstringno

Doorvhr.vin serves this noun on its two routes: / (the landing) · /1FTER4FH1MLD12624 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — history.titleEvents
import { history } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await history.titleEvents({"vin":"1FTER4FH1MLD12624"})
GET /histories/title-events
curl 'https://apis.vin/histories/title-events?vin=1FTER4FH1MLD12624'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.229Z · HTTP 200
{
  "type": "OK",
  "answers": "HistoryTitleEvents@1",
  "value": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "events": [
      {
        "date": "2019-03-12",
        "type": "title",
        "description": "Title issued"
      },
      {
        "date": "2019-03-20",
        "type": "registration",
        "description": "First registration"
      }
    ]
  },
  "evidence": {
    "vin": "1FTER4FH1MLD12624",
    "noun": "history",
    "asOf": "2026-08-10",
    "recordId": "VR-47b91df5",
    "events": [
      {
        "date": "2019-03-12",
        "type": "title",
        "description": "Title issued"
      },
      {
        "date": "2019-03-20",
        "type": "registration",
        "description": "First registration"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "records-cabinet-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Data model

The record shape behind this noun — one entity, each property an evidence field. See the whole estate model on the data model page.

VehicleRecord

Modeled

The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 4 diagrams, rendered from the estate model.

History · Class model

History · Class model

History · State machine

History · Sequence


Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.