docs.vin

insurance

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

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

Identity

Nouninsurance
PillarCommerce (facets: 8 data · 9 services · 11 commerce)
Capabilities28 — 0 live · 28 sandbox · 0 declared
EntitiesPolicy
Doorsaggregator.vin · insure.vin
SDKVin.insurance.* from apis.vin
Address/catalog/insurance#{action} — the anchor IS the wire name minus insurance.

Events

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

Discover & read

compare

insurance.compare · GET /insurances/compare · gate key · sandbox · answers InsuranceCompare@1

FieldTypeRequiredNotes
vinstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.compare
import { insurance } from 'apis.vin'

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

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.611Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceCompare@1",
  "value": {
    "vin": "1C4JJXSJ2MW707071",
    "comparedAt": "2026-08-10T00:00:00.000Z",
    "options": [
      {
        "option": "carrier-1",
        "bindable": true,
        "termMonths": 6,
        "premium": {
          "amount": "79443",
          "currency": "USD"
        }
      },
      {
        "option": "carrier-2",
        "bindable": true,
        "termMonths": 6,
        "premium": {
          "amount": "77062",
          "currency": "USD"
        }
      },
      {
        "option": "carrier-3",
        "bindable": true,
        "termMonths": 6,
        "premium": {
          "amount": "84205",
          "currency": "USD"
        }
      }
    ],
    "cheapest": "carrier-2"
  },
  "evidence": {
    "vin": "1C4JJXSJ2MW707071",
    "comparedAt": "2026-08-10T00:00:00.000Z",
    "options": [
      {
        "option": "carrier-1",
        "bindable": true,
        "termMonths": 6,
        "premium": {
          "amount": "79443",
          "currency": "USD"
        }
      },
      {
        "option": "carrier-2",
        "bindable": true,
        "termMonths": 6,
        "premium": {
          "amount": "77062",
          "currency": "USD"
        }
      },
      {
        "option": "carrier-3",
        "bindable": true,
        "termMonths": 6,
        "premium": {
          "amount": "84205",
          "currency": "USD"
        }
      }
    ],
    "cheapest": "carrier-2"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

policyStatus

insurance.policyStatus · GET /insurances/policy-status · gate none · sandbox · answers InsurancePolicyStatus@1

FieldTypeRequiredNotes
vinstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.policyStatus
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.policyStatus({"vin":"1C4JJXSJ2MW707071"})
GET /insurances/policy-status
curl 'https://apis.vin/insurances/policy-status?vin=1C4JJXSJ2MW707071'

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.613Z · HTTP 200
{
  "type": "OK",
  "answers": "InsurancePolicyStatus@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "bound",
    "termMonths": 6,
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z"
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "bound",
    "termMonths": 6,
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

certificateVerify

insurance.certificateVerify · GET /insurances/certificate-verify · gate none · sandbox · answers InsuranceCertificateVerify@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.certificateVerify
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.certificateVerify()
GET /insurances/certificate-verify
curl 'https://apis.vin/insurances/certificate-verify'

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-16T14:50:09.870Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceCertificateVerify@1",
  "value": {
    "certificateId": "coi_00000000",
    "verified": true,
    "status": "valid",
    "verifiedAt": "2026-08-10T00:00:00.000Z",
    "policyNumber": "POL-A16A90CF"
  },
  "evidence": {
    "certificateId": "coi_00000000",
    "verified": true,
    "status": "valid",
    "verifiedAt": "2026-08-10T00:00:00.000Z",
    "policyNumber": "POL-A16A90CF"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

proofVerify

insurance.proofVerify · GET /insurances/proof-verify · gate key · sandbox · answers InsuranceProofVerify@1

FieldTypeRequiredNotes
vinstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.proofVerify
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.proofVerify({"vin":"1C4JJXSJ2MW707071"})
GET /insurances/proof-verify
curl 'https://apis.vin/insurances/proof-verify?vin=1C4JJXSJ2MW707071'

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.620Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceProofVerify@1",
  "value": {
    "verified": true,
    "vin": "1C4JJXSJ2MW707071",
    "verification": "account-verified",
    "policyNumber": "POL-1581AE2E",
    "carrier": "acme-mutual",
    "coverages": [
      {
        "code": "BI",
        "limit": 67000
      },
      {
        "code": "PD",
        "limit": 55000
      },
      {
        "code": "UMBI",
        "limit": 66000
      },
      {
        "code": "UMPD",
        "limit": 98000
      },
      {
        "code": "COMP",
        "limit": 81000
      },
      {
        "code": "COLL",
        "limit": 94000
      }
    ]
  },
  "evidence": {
    "verified": true,
    "vin": "1C4JJXSJ2MW707071",
    "verification": "account-verified",
    "policyNumber": "POL-1581AE2E",
    "carrier": "acme-mutual",
    "coverages": [
      {
        "code": "BI",
        "limit": 67000
      },
      {
        "code": "PD",
        "limit": 55000
      },
      {
        "code": "UMBI",
        "limit": 66000
      },
      {
        "code": "UMPD",
        "limit": 98000
      },
      {
        "code": "COMP",
        "limit": 81000
      },
      {
        "code": "COLL",
        "limit": 94000
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

lapseMonitor

insurance.lapseMonitor · POST /insurances/lapse-monitor · gate offer · sandbox · answers InsuranceLapseMonitor@1

FieldTypeRequiredNotes
vinstringno
asOfstringnoformat date-time; observation instant (≡ the x-world-as-of header); the answer states the world AT this instant — absent, at, or before the fixed as-of answers the unmoved world

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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.lapseMonitored@1 · Insurance.lapsed@1.

the SDK — insurance.lapseMonitor
import { insurance } from 'apis.vin'

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

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.613Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceLapseMonitor@1",
  "value": {
    "monitorId": "mon_d9deb764",
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "status": "monitoring",
    "coverageActive": true,
    "notifyLienholder": true,
    "checkedAt": "2026-08-10T00:00:00.000Z"
  },
  "evidence": {
    "monitorId": "mon_d9deb764",
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "status": "monitoring",
    "coverageActive": true,
    "notifyLienholder": true,
    "checkedAt": "2026-08-10T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

insurance.quote · POST /insurances/quote · gate offer · sandbox · answers InsuranceQuote@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.failed@1 · Insurance.quoted@1.

the SDK — insurance.quote
import { insurance } from 'apis.vin'

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

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.621Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceQuote@1",
  "value": {
    "quoteId": "iq_7e2345f3",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "bindable": true,
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "termMonths": 6,
    "coverages": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10",
    "expiresAt": "2026-09-09T00:00:00.000Z"
  },
  "evidence": {
    "quoteId": "iq_7e2345f3",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "bindable": true,
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "termMonths": 6,
    "coverages": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10",
    "expiresAt": "2026-09-09T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

rate

insurance.rate · GET /insurances/rate · gate key · sandbox · answers InsuranceRate@1

FieldTypeRequiredNotes
vinstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.rate
import { insurance } from 'apis.vin'

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

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.641Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceRate@1",
  "value": {
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "termMonths": 6,
    "totalPremium": {
      "amount": "76625",
      "currency": "USD"
    },
    "rates": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10"
  },
  "evidence": {
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "termMonths": 6,
    "totalPremium": {
      "amount": "76625",
      "currency": "USD"
    },
    "rates": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

proofRequest

insurance.proofRequest · POST /insurances/proof-request · gate offer · sandbox · answers InsuranceProofRequest@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.proofIssued@1.

the SDK — insurance.proofRequest
import { insurance } from 'apis.vin'

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

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.620Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceProofRequest@1",
  "value": {
    "requestId": "proofreq_70054b24",
    "vin": "1C4JJXSJ2MW707071",
    "policyNumber": "POL-1581AE2E",
    "status": "requested",
    "requestedAt": "2026-08-10"
  },
  "evidence": {
    "requestId": "proofreq_70054b24",
    "vin": "1C4JJXSJ2MW707071",
    "policyNumber": "POL-1581AE2E",
    "status": "requested",
    "requestedAt": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

premiumFinance

insurance.premiumFinance · POST /insurances/premium-finance · gate offer · sandbox · answers PremiumFinance@1

FieldTypeRequiredNotes
policystringyes
downPaymentstringno
termintegerno
authoritystringno

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.

Delegated calls require a typed Mandate{ ceiling, perAction, expires, tripwires }; the ceiling is a field, not a conversation.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.failed@1 · Insurance.premiumFinanced@1 · PremiumFinance.originated@1.

the SDK — insurance.premiumFinance
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.premiumFinance({"policy":"policy"})
POST /insurances/premium-finance
curl -X POST https://apis.vin/insurances/premium-finance \
  -H 'content-type: application/json' \
  -d '{"policy":"policy"}'

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-16T14:50:09.873Z · HTTP 200
{
  "type": "OK",
  "answers": "PremiumFinance@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "financing": {
      "status": "not-available",
      "basis": "no-world-premium-law",
      "principal": {
        "status": "not-posted",
        "basis": "no-world-money-law"
      }
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "financing": {
      "status": "not-available",
      "basis": "no-world-premium-law",
      "principal": {
        "status": "not-posted",
        "basis": "no-world-money-law"
      }
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "policy-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

forcePlaceRefund

insurance.forcePlaceRefund · POST /insurances/force-place-refund · gate key · sandbox · answers InsuranceForcePlaceRefund@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.forcePlaceRefunded@1.

the SDK — insurance.forcePlaceRefund
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.forcePlaceRefund()
POST /insurances/force-place-refund
curl -X POST https://apis.vin/insurances/force-place-refund \
  -H 'content-type: application/json' \
  -d '{}'

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-16T14:50:09.871Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceForcePlaceRefund@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "refund": {
      "status": "no-placement-on-record",
      "keepPosition": "NotEnrolled"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "refund": {
      "status": "no-placement-on-record",
      "keepPosition": "NotEnrolled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "policy-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

issue

insurance.issue · POST /insurances/issue · gate offer · sandbox · answers InsuranceIssue@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.policyIssued@1.

the SDK — insurance.issue
import { insurance } from 'apis.vin'

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

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.612Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceIssue@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "issued",
    "termMonths": 6,
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "coverages": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "issuedAt": "2026-08-10T00:00:00.000Z"
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "issued",
    "termMonths": 6,
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "coverages": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "issuedAt": "2026-08-10T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

certificateIssue

insurance.certificateIssue · POST /insurances/certificate-issue · gate key · sandbox · answers InsuranceCertificateIssue@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.certificateIssued@1.

the SDK — insurance.certificateIssue
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.certificateIssue()
POST /insurances/certificate-issue
curl -X POST https://apis.vin/insurances/certificate-issue \
  -H 'content-type: application/json' \
  -d '{}'

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-16T14:50:09.870Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceCertificateIssue@1",
  "value": {
    "certificateId": "coi_0c10d63d",
    "policyNumber": "POL-6A70A040",
    "vin": "1HGES16503L000004",
    "carrier": "sandbox-general",
    "holder": "sandbox-lienholder",
    "coverages": [
      {
        "code": "BI",
        "limit": 52000,
        "premium": {
          "amount": "14551",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 51000,
        "premium": {
          "amount": "11000",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 52000,
        "premium": {
          "amount": "19625",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 52000,
        "premium": {
          "amount": "18342",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 87000,
        "premium": {
          "amount": "16785",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 42000,
        "premium": {
          "amount": "14614",
          "currency": "USD"
        }
      }
    ],
    "status": "issued",
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "issuedAt": "2026-08-10T00:00:00.000Z"
  },
  "evidence": {
    "certificateId": "coi_0c10d63d",
    "policyNumber": "POL-6A70A040",
    "vin": "1HGES16503L000004",
    "carrier": "sandbox-general",
    "holder": "sandbox-lienholder",
    "coverages": [
      {
        "code": "BI",
        "limit": 52000,
        "premium": {
          "amount": "14551",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 51000,
        "premium": {
          "amount": "11000",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 52000,
        "premium": {
          "amount": "19625",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 52000,
        "premium": {
          "amount": "18342",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 87000,
        "premium": {
          "amount": "16785",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 42000,
        "premium": {
          "amount": "14614",
          "currency": "USD"
        }
      }
    ],
    "status": "issued",
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "issuedAt": "2026-08-10T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

gapDeficiencyWaive

insurance.gapDeficiencyWaive · POST /insurances/gap-deficiency-waive · gate key · sandbox · answers InsuranceGapDeficiencyWaive@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.gapDeficiencyWaived@1.

the SDK — insurance.gapDeficiencyWaive
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.gapDeficiencyWaive()
POST /insurances/gap-deficiency-waive
curl -X POST https://apis.vin/insurances/gap-deficiency-waive \
  -H 'content-type: application/json' \
  -d '{}'

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-16T14:50:09.871Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceGapDeficiencyWaive@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "contract": {
      "id": "PP-c45d19d2",
      "product": "GAP",
      "status": "on-file"
    },
    "waiver": {
      "status": "waivable",
      "payoffCents": 1910941,
      "settlementCents": 499500,
      "deficiencyCents": 1411441,
      "currency": "USD",
      "lienholder": "Huntington National Bank",
      "basis": "net-payoff-minus-settlement-value"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "contract": {
      "id": "PP-c45d19d2",
      "product": "GAP",
      "status": "on-file"
    },
    "waiver": {
      "status": "waivable",
      "payoffCents": 1910941,
      "settlementCents": 499500,
      "deficiencyCents": 1411441,
      "currency": "USD",
      "lienholder": "Huntington National Bank",
      "basis": "net-payoff-minus-settlement-value"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "policy-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

renew

insurance.renew · POST /insurances/renew · gate offer · sandbox · answers InsuranceRenew@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.failed@1 · Insurance.renewed@1.

the SDK — insurance.renew
import { insurance } from 'apis.vin'

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

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.646Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceRenew@1",
  "value": {
    "policyNumber": "POL-A939FE48",
    "priorPolicy": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "bound",
    "termMonths": 6,
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "effectiveDate": "2027-02-06T00:00:00.000Z",
    "expiresAt": "2027-08-05T00:00:00.000Z"
  },
  "evidence": {
    "policyNumber": "POL-A939FE48",
    "priorPolicy": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "bound",
    "termMonths": 6,
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "effectiveDate": "2027-02-06T00:00:00.000Z",
    "expiresAt": "2027-08-05T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

reinstate

insurance.reinstate · POST /insurances/reinstate · gate offer · sandbox · answers InsuranceReinstate@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.failed@1 · Insurance.reinstated@1.

the SDK — insurance.reinstate
import { insurance } from 'apis.vin'

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

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.642Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceReinstate@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "priorStatus": "cancelled",
    "status": "bound",
    "reinstatementFee": {
      "amount": "2500",
      "currency": "USD"
    },
    "lapseDays": 2,
    "reinstatedAt": "2026-08-10T00:00:00.000Z",
    "effectiveDate": "2026-08-10"
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "priorStatus": "cancelled",
    "status": "bound",
    "reinstatementFee": {
      "amount": "2500",
      "currency": "USD"
    },
    "lapseDays": 2,
    "reinstatedAt": "2026-08-10T00:00:00.000Z",
    "effectiveDate": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

cancel

insurance.cancel · POST /insurances/cancel · gate offer · sandbox · answers InsuranceCancel@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.canceled@1 · Insurance.failed@1 · Insurance.refunded@1.

the SDK — insurance.cancel
import { insurance } from 'apis.vin'

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

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.610Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceCancel@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "status": "cancelled",
    "effectiveDate": "2026-08-10",
    "unearnedRefund": {
      "amount": "38312",
      "currency": "USD"
    },
    "basis": "pro-rata"
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "status": "cancelled",
    "effectiveDate": "2026-08-10",
    "unearnedRefund": {
      "amount": "38312",
      "currency": "USD"
    },
    "basis": "pro-rata"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

addVehicle

insurance.addVehicle · POST /insurances/add-vehicle · gate offer · sandbox · answers InsuranceAddVehicle@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.vehicleAdded@1.

the SDK — insurance.addVehicle
import { insurance } from 'apis.vin'

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

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.603Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceAddVehicle@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "addedVin": "5YJ3E1EA7KF328931",
    "status": "active",
    "vehicles": [
      "1C4JJXSJ2MW707071",
      "5YJ3E1EA7KF328931"
    ],
    "endorsement": "end_88d17f2b",
    "premiumDelta": {
      "amount": "8086",
      "currency": "USD"
    },
    "effectiveDate": "2026-08-10"
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "addedVin": "5YJ3E1EA7KF328931",
    "status": "active",
    "vehicles": [
      "1C4JJXSJ2MW707071",
      "5YJ3E1EA7KF328931"
    ],
    "endorsement": "end_88d17f2b",
    "premiumDelta": {
      "amount": "8086",
      "currency": "USD"
    },
    "effectiveDate": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

bind

insurance.bind · POST /insurances/bind · gate human · sandbox · answers InsurancePolicy@1

FieldTypeRequiredNotes
vinstringyes
insuredobjectno
coveragesarray<string>yes
effectiveDatestringnoformat date
lienholderobjectno

The gate is a 403 NEEDS_HUMAN — the human verb authorize (credential: insurance-producer) · supply side, routed to a named, staffed, priced terminus with a poll rail. Never a dead end. Price: not posted — see /pricing.

Delegated calls require a typed Mandate{ ceiling, perAction, expires, tripwires }; the ceiling is a field, not a conversation.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.bound@1 · Insurance.failed@1 · Insurance.policyIssued@1 · Insurance.quoted@1.

the SDK — insurance.bind
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.bind({"vin":"1C4JJXSJ2MW707071","coverages":[]})
POST /insurances/bind
curl -X POST https://apis.vin/insurances/bind \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4JJXSJ2MW707071","coverages":[]}'

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.603Z · HTTP 200
{
  "type": "OK",
  "answers": "InsurancePolicy@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "quoteId": "iq_7e2345f3",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "bound",
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "termMonths": 6,
    "coverages": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "producer": {
      "licensed": true,
      "producerId": "sandbox-producer",
      "state": "CA"
    }
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "quoteId": "iq_7e2345f3",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "bound",
    "premium": {
      "amount": "76625",
      "currency": "USD"
    },
    "termMonths": 6,
    "coverages": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ],
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "producer": {
      "licensed": true,
      "producerId": "sandbox-producer",
      "state": "CA"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  },
  "connect": {
    "type": "OFFER",
    "kind": "connect",
    "reason": "CONNECTION_ABSENT",
    "portClass": "insurance-carrier",
    "state": "absent",
    "url": "https://integrates.vin/connect/insurance-carrier",
    "message": "insurance.bind is live via connection — certified, connect to activate: complete the insurance-carrier link ceremony at https://integrates.vin/connect/insurance-carrier. The credential vault (auth.vin) holds the token, and the same call answers simulated:false — activation is the token, never a deploy."
  }
}

coverageOptions

insurance.coverageOptions · GET /insurances/coverage-options · gate key · sandbox · answers InsuranceCoverageOptions@1

FieldTypeRequiredNotes
vinstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.coverageOptions
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.coverageOptions({"vin":"1C4JJXSJ2MW707071"})
GET /insurances/coverage-options
curl 'https://apis.vin/insurances/coverage-options?vin=1C4JJXSJ2MW707071'

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.611Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceCoverageOptions@1",
  "value": {
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "bindable": true,
    "options": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ]
  },
  "evidence": {
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "bindable": true,
    "options": [
      {
        "code": "BI",
        "limit": 67000,
        "premium": {
          "amount": "15429",
          "currency": "USD"
        }
      },
      {
        "code": "PD",
        "limit": 55000,
        "premium": {
          "amount": "14746",
          "currency": "USD"
        }
      },
      {
        "code": "UMBI",
        "limit": 66000,
        "premium": {
          "amount": "12143",
          "currency": "USD"
        }
      },
      {
        "code": "UMPD",
        "limit": 98000,
        "premium": {
          "amount": "8224",
          "currency": "USD"
        }
      },
      {
        "code": "COMP",
        "limit": 81000,
        "premium": {
          "amount": "13691",
          "currency": "USD"
        }
      },
      {
        "code": "COLL",
        "limit": 94000,
        "premium": {
          "amount": "12392",
          "currency": "USD"
        }
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

endorse

insurance.endorse · POST /insurances/endorse · gate offer · sandbox · answers InsuranceEndorse@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.endorsed@1.

the SDK — insurance.endorse
import { insurance } from 'apis.vin'

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

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.611Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceEndorse@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "endorsement": "end_18d6f0aa",
    "change": "deductible",
    "deductible": 250,
    "premiumDelta": {
      "amount": "-311",
      "currency": "USD"
    },
    "status": "endorsed",
    "effectiveDate": "2026-08-10"
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "endorsement": "end_18d6f0aa",
    "change": "deductible",
    "deductible": 250,
    "premiumDelta": {
      "amount": "-311",
      "currency": "USD"
    },
    "status": "endorsed",
    "effectiveDate": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

forcePlace

insurance.forcePlace · POST /insurances/force-place · gate key · sandbox · answers InsuranceForcePlace@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.forcePlaced@1.

the SDK — insurance.forcePlace
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.forcePlace()
POST /insurances/force-place
curl -X POST https://apis.vin/insurances/force-place \
  -H 'content-type: application/json' \
  -d '{}'

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-16T14:50:09.871Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceForcePlace@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "placement": {
      "status": "no-lapse-no-placement",
      "keepPosition": "NotEnrolled"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "placement": {
      "status": "no-lapse-no-placement",
      "keepPosition": "NotEnrolled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "policy-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

lienholder

insurance.lienholder · POST /insurances/lienholder · gate offer · sandbox · answers InsuranceLienholder@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.lienholderAdded@1.

the SDK — insurance.lienholder
import { insurance } from 'apis.vin'

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

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.613Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceLienholder@1",
  "value": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "lienholder": {
      "id": "lien_24a884b9",
      "role": "loss-payee",
      "loanNumber": "LN-3DD087"
    },
    "status": "lienholder-added",
    "effectiveDate": "2026-08-10"
  },
  "evidence": {
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "lienholder": {
      "id": "lien_24a884b9",
      "role": "loss-payee",
      "loanNumber": "LN-3DD087"
    },
    "status": "lienholder-added",
    "effectiveDate": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

parametric

insurance.parametric · POST /insurances/parametric · gate key · sandbox · answers InsuranceParametric@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.parametricPaid@1.

the SDK — insurance.parametric
import { insurance } from 'apis.vin'

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

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-16T14:50:09.873Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceParametric@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "parametric": {
      "status": "trigger-not-met",
      "eventId": "CAT-be67edc1",
      "index": {
        "floodBranded": 0,
        "hailBranded": 0
      },
      "basis": "cat-exposure-census",
      "payout": {
        "status": "not-posted",
        "basis": "no-world-money-law"
      }
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "parametric": {
      "status": "trigger-not-met",
      "eventId": "CAT-be67edc1",
      "index": {
        "floodBranded": 0,
        "hailBranded": 0
      },
      "basis": "cat-exposure-census",
      "payout": {
        "status": "not-posted",
        "basis": "no-world-money-law"
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "policy-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

proofCard

insurance.proofCard · POST /insurances/proof-card · gate offer · sandbox · answers InsuranceProofCard@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.

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.cardIssued@1.

the SDK — insurance.proofCard
import { insurance } from 'apis.vin'

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

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.619Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceProofCard@1",
  "value": {
    "cardId": "card_70054b24",
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "issued",
    "format": "wallet",
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "issuedAt": "2026-08-10T00:00:00.000Z"
  },
  "evidence": {
    "cardId": "card_70054b24",
    "policyNumber": "POL-1581AE2E",
    "vin": "1C4JJXSJ2MW707071",
    "carrier": "acme-mutual",
    "status": "issued",
    "format": "wallet",
    "effectiveDate": "2026-08-10",
    "expiresAt": "2027-02-06T00:00:00.000Z",
    "issuedAt": "2026-08-10T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

prove

insurance.prove · POST /insurances/prove · gate key · sandbox · answers InsuranceProof@1

FieldTypeRequiredNotes
vinstringyes
connectionstringnoan insurance account-link (C5) supplies account-verified proof
subjectstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsuranceProof.lapsed@1 · InsuranceProof.proved@1.

the SDK — insurance.prove
import { insurance } from 'apis.vin'

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

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.620Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceProof@1",
  "value": {
    "verified": true,
    "vin": "1C4JJXSJ2MW707071",
    "verification": "account-verified",
    "policyNumber": "POL-1581AE2E",
    "carrier": "acme-mutual",
    "coverages": [
      {
        "code": "BI",
        "limit": 67000
      },
      {
        "code": "PD",
        "limit": 55000
      },
      {
        "code": "UMBI",
        "limit": 66000
      },
      {
        "code": "UMPD",
        "limit": 98000
      },
      {
        "code": "COMP",
        "limit": 81000
      },
      {
        "code": "COLL",
        "limit": 94000
      }
    ]
  },
  "evidence": {
    "verified": true,
    "vin": "1C4JJXSJ2MW707071",
    "verification": "account-verified",
    "policyNumber": "POL-1581AE2E",
    "carrier": "acme-mutual",
    "coverages": [
      {
        "code": "BI",
        "limit": 67000
      },
      {
        "code": "PD",
        "limit": 55000
      },
      {
        "code": "UMBI",
        "limit": 66000
      },
      {
        "code": "UMPD",
        "limit": 98000
      },
      {
        "code": "COMP",
        "limit": 81000
      },
      {
        "code": "COLL",
        "limit": 94000
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  },
  "connect": {
    "type": "OFFER",
    "kind": "connect",
    "reason": "CONNECTION_ABSENT",
    "portClass": "connections-carrier",
    "state": "absent",
    "url": "https://integrates.vin/connect/connections-carrier",
    "message": "insurance.prove is live via connection — certified, connect to activate: complete the connections-carrier link ceremony at https://integrates.vin/connect/connections-carrier. The credential vault (auth.vin) holds the token, and the same call answers simulated:false — activation is the token, never a deploy."
  }
}

symbol

insurance.symbol · GET /insurances/symbol · gate none · sandbox · answers InsuranceSymbol@1

FieldTypeRequiredNotes
vinstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.symbol
import { insurance } from 'apis.vin'

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

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.650Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceSymbol@1",
  "value": {
    "vin": "1C4JJXSJ2MW707071",
    "ratingSymbol": 2,
    "liabilitySymbol": "I",
    "physicalDamageSymbol": 6,
    "modelYearRatingGroup": 31
  },
  "evidence": {
    "vin": "1C4JJXSJ2MW707071",
    "ratingSymbol": 2,
    "liabilitySymbol": "I",
    "physicalDamageSymbol": 6,
    "modelYearRatingGroup": 31
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

telematics

insurance.telematics · GET /insurances/telematics · gate key · sandbox · answers InsuranceTelematics@1

FieldTypeRequiredNotes
vinstringno

Doorinsure.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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 — insurance.telematics
import { insurance } from 'apis.vin'

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

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.650Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceTelematics@1",
  "value": {
    "vin": "1C4JJXSJ2MW707071",
    "score": 87,
    "band": "preferred",
    "milesObserved": 2600,
    "hardBrakes": 1,
    "windowDays": 30,
    "asOf": "2026-08-10T00:00:00.000Z"
  },
  "evidence": {
    "vin": "1C4JJXSJ2MW707071",
    "score": 87,
    "band": "preferred",
    "milesObserved": 2600,
    "hardBrakes": 1,
    "windowDays": 30,
    "asOf": "2026-08-10T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "insurance-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

uninsuredMotoristHandle

insurance.uninsuredMotoristHandle · POST /insurances/uninsured-motorist-handle · gate key · sandbox · answers InsuranceUninsuredMotoristHandle@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4JJXSJ2MW707071 (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.

EmitsInsurance.uninsuredMotoristHandled@1.

the SDK — insurance.uninsuredMotoristHandle
import { insurance } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insurance.uninsuredMotoristHandle()
POST /insurances/uninsured-motorist-handle
curl -X POST https://apis.vin/insurances/uninsured-motorist-handle \
  -H 'content-type: application/json' \
  -d '{}'

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-16T14:50:09.875Z · HTTP 200
{
  "type": "OK",
  "answers": "InsuranceUninsuredMotoristHandle@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "claim": {
      "status": "no-claim-on-file"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "insurance",
    "asOf": "2026-08-10",
    "claim": {
      "status": "no-claim-on-file"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "policy-annex-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.

Policy

Schema

PropertyTypeNotes
ididpol_
vinstring
policyNumberstring
insuredIdref→Party
coveragesCoverage[]
premiummoney
effectiveDatedate
thirdPartiesThirdParty[]lienholder|lessor
carrierIdref→Insurer
statusenum

Relationships

FromToCardinalityAs
insuranceClaiminsurance1:0..1against
insuranceinsurer*:1carried-by

Modeled

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

Insurance · Class model

Insurance · State machine

Insurance · Sequence


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