insuranceClaim
The insuranceClaim noun — identity, lifecycle, events, and every capability as an anchored section: 17 capabilities, 0 live, 17 sandbox, 0 declared.
insuranceClaim is one of the estate's 317 automotive nouns — a job a car needs done. It carries 17 capabilities: 0 live, 17 sandbox, 0 declared · doors aggregator.vin · fnol.vin.
Identity
| Noun | insuranceClaim |
| Pillar | Services (facets: 1 data · 12 services · 4 commerce) |
| Capabilities | 17 — 0 live · 17 sandbox · 0 declared |
| Entities | Claim |
| Doors | aggregator.vin · fnol.vin |
| SDK | Vin.insuranceClaim.* from apis.vin |
| Address | /catalog/insuranceClaim#{action} — the anchor IS the wire name minus insuranceClaim. |
Lifecycle
Claim — ClaimFSM: 7 states, 8 transitions — Opened · AcvDetermined · Approved · Denied · Appealed · Reversed · Settled. Each transition is a past-tense event on the record.
Events
The vocabulary this noun can append to the record — 25 past-tense, versioned event types, each linked to the capability that emits it:
Claim.adjudicated@1— emitted byopenClaim.appealed@1— emitted byappealClaim.assigned@1— emitted byopenClaim.denied@1— emitted byadjudicateClaim.opened@1— emitted byopenClaim.paid@1— emitted byopenClaim.reversed@1— emitted byadjudicateClaim.upheld@1— emitted byadjudicateInsuranceClaim.adjudicated@1— emitted byadjudicateInsuranceClaim.adjusterAssigned@1— emitted byassignInsuranceClaim.appraisalDisputed@1— emitted byappraisalDisputeInsuranceClaim.deductibleCollected@1— emitted bydeductibleInsuranceClaim.diminishedValueAssessed@1— emitted bydiminishedValueInsuranceClaim.estimated@1— emitted byestimateInsuranceClaim.failed@1— emitted bydeductible·pay·rentalCoverageInsuranceClaim.fnolReported@1— emitted byreportInsuranceClaim.inspected@1— emitted byinspectInsuranceClaim.intakeCaptured@1— emitted byintakeInsuranceClaim.paid@1— emitted bypayInsuranceClaim.rentalCovered@1— emitted byrentalCoverageInsuranceClaim.requested@1— emitted byinspectInsuranceClaim.reserveSet@1— emitted byreserveInsuranceClaim.subrogated@1— emitted bysubrogateInsuranceClaim.supplemented@1— emitted bysupplementLossOfUse.benefited@1— emitted byopen
Discover & read
status
insuranceClaim.status · GET /insurance-claims/status · gate none · sandbox · answers InsuranceClaimStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.status({"vin":"5N1AZ3DSXTC105411"})curl 'https://apis.vin/insurance-claims/status?vin=5N1AZ3DSXTC105411'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.
{
"type": "OK",
"answers": "InsuranceClaimStatus@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "paid",
"open": false,
"lossType": "collision",
"asOf": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "paid",
"open": false,
"lossType": "collision",
"asOf": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}report
insuranceClaim.report · POST /insurance-claims/report · gate offer · sandbox · answers InsuranceClaimReport@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.fnolReported@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.report({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/report \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimReport@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "reported",
"fnolNumber": "fnol_d56e9938",
"lossType": "collision",
"lossDate": "2026-08-10",
"reportedAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "reported",
"fnolNumber": "fnol_d56e9938",
"lossType": "collision",
"lossDate": "2026-08-10",
"reportedAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rentalCoverage
insuranceClaim.rentalCoverage · POST /insurance-claims/rental-coverage · gate offer · sandbox · answers InsuranceClaimRentalCoverage@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.failed@1 · InsuranceClaim.rentalCovered@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.rentalCoverage({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/rental-coverage \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimRentalCoverage@1",
"value": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"evidence": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "claim-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
estimate
insuranceClaim.estimate · POST /insurance-claims/estimate · gate offer · sandbox · answers InsuranceClaimEstimate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.estimated@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.estimate({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/estimate \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimEstimate@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "estimated",
"estimate": {
"parts": {
"amount": "409975",
"currency": "USD"
},
"labor": {
"amount": "188095",
"currency": "USD"
},
"total": {
"amount": "598070",
"currency": "USD"
}
},
"totalLoss": false,
"estimatedAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "estimated",
"estimate": {
"parts": {
"amount": "409975",
"currency": "USD"
},
"labor": {
"amount": "188095",
"currency": "USD"
},
"total": {
"amount": "598070",
"currency": "USD"
}
},
"totalLoss": false,
"estimatedAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}diminishedValue
insuranceClaim.diminishedValue · POST /insurance-claims/diminished-value · gate key · sandbox · answers InsuranceClaimDiminishedValue@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.diminishedValueAssessed@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.diminishedValue()curl -X POST https://apis.vin/insurance-claims/diminished-value \
-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.
{
"type": "OK",
"answers": "InsuranceClaimDiminishedValue@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "claim-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
reserve
insuranceClaim.reserve · POST /insurance-claims/reserve · gate offer · sandbox · answers InsuranceClaimReserve@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.reserveSet@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.reserve({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/reserve \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimReserve@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "reserve-set",
"reserve": {
"amount": "920181",
"currency": "USD"
},
"category": "indemnity",
"setAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "reserve-set",
"reserve": {
"amount": "920181",
"currency": "USD"
},
"category": "indemnity",
"setAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}open
insuranceClaim.open · POST /insurance-claims/open · gate key · sandbox · answers InsuranceClaimOpen@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | yes | — |
policy | string | no | — |
loss | object | yes | — |
lossOfUse | boolean | no | — |
Door — fnol.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — Claim.adjudicated@1 · Claim.assigned@1 · Claim.opened@1 · Claim.paid@1 · LossOfUse.benefited@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.open({"vin":"5N1AZ3DSXTC105411","loss":{}})curl -X POST https://apis.vin/insurance-claims/open \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411","loss":{}}'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.
{
"type": "OK",
"answers": "InsuranceClaimOpen@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "open",
"lossType": "collision",
"lossDate": "2026-08-10",
"reportedAt": "2026-08-10",
"reserve": {
"amount": "500000",
"currency": "USD"
},
"deductible": {
"amount": "50000",
"currency": "USD"
}
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "open",
"lossType": "collision",
"lossDate": "2026-08-10",
"reportedAt": "2026-08-10",
"reserve": {
"amount": "500000",
"currency": "USD"
},
"deductible": {
"amount": "50000",
"currency": "USD"
}
},
"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": "insuranceClaim.open 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."
}
}assign
insuranceClaim.assign · POST /insurance-claims/assign · gate offer · sandbox · answers InsuranceClaimAssign@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.adjusterAssigned@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.assign({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/assign \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimAssign@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "assigned",
"adjuster": "adj_1492dafb",
"queue": "auto-physical-damage",
"assignedAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "assigned",
"adjuster": "adj_1492dafb",
"queue": "auto-physical-damage",
"assignedAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
insuranceClaim.pay · POST /insurance-claims/pay · gate offer · sandbox · answers InsuranceClaimPay@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.failed@1 · InsuranceClaim.paid@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.pay({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/pay \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimPay@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "paid",
"payment": "pay_8ee7af13",
"amount": {
"amount": "603829",
"currency": "USD"
},
"method": "ach",
"payee": "Ada Sandbox",
"paidAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "paid",
"payment": "pay_8ee7af13",
"amount": {
"amount": "603829",
"currency": "USD"
},
"method": "ach",
"payee": "Ada Sandbox",
"paidAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
inspect
insuranceClaim.inspect · POST /insurance-claims/inspect · gate offer · sandbox · answers InsuranceClaimInspect@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.inspected@1 · InsuranceClaim.requested@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.inspect({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/inspect \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimInspect@1",
"value": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"evidence": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "claim-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
appeal
insuranceClaim.appeal · POST /insurance-claims/appeal · gate key · sandbox · answers InsuranceClaimAppeal@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
reason | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — Claim.appealed@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.appeal({"vin":"5N1AZ3DSXTC105411","reason":"reason"})curl -X POST https://apis.vin/insurance-claims/appeal \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411","reason":"reason"}'adjudicate
insuranceClaim.adjudicate · POST /insurance-claims/adjudicate · gate offer · sandbox · answers InsuranceClaimAdjudicate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — Claim.denied@1 · Claim.reversed@1 · Claim.upheld@1 · InsuranceClaim.adjudicated@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.adjudicate({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/adjudicate \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimAdjudicate@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "adjudicated",
"decision": "approved",
"grossLoss": {
"amount": "653829",
"currency": "USD"
},
"deductible": {
"amount": "50000",
"currency": "USD"
},
"payable": {
"amount": "603829",
"currency": "USD"
},
"adjudicatedAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "adjudicated",
"decision": "approved",
"grossLoss": {
"amount": "653829",
"currency": "USD"
},
"deductible": {
"amount": "50000",
"currency": "USD"
},
"payable": {
"amount": "603829",
"currency": "USD"
},
"adjudicatedAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}appraisalDispute
insuranceClaim.appraisalDispute · POST /insurance-claims/appraisal-dispute · gate key · sandbox · answers InsuranceClaimAppraisalDispute@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.appraisalDisputed@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.appraisalDispute()curl -X POST https://apis.vin/insurance-claims/appraisal-dispute \
-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.
{
"type": "OK",
"answers": "InsuranceClaimAppraisalDispute@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "claim-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
deductible
insuranceClaim.deductible · POST /insurance-claims/deductible · gate offer · sandbox · answers InsuranceClaimDeductible@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.deductibleCollected@1 · InsuranceClaim.failed@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.deductible({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/deductible \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimDeductible@1",
"value": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"evidence": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "claim-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}intake
insuranceClaim.intake · POST /insurance-claims/intake · gate offer · sandbox · answers InsuranceClaimIntake@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.intakeCaptured@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.intake({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/intake \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimIntake@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "intake",
"lossType": "collision",
"lossDate": "2026-08-10",
"claimant": "Ada Sandbox",
"capturedAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "intake",
"lossType": "collision",
"lossDate": "2026-08-10",
"claimant": "Ada Sandbox",
"capturedAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}subrogate
insuranceClaim.subrogate · POST /insurance-claims/subrogate · gate offer · sandbox · answers InsuranceClaimSubrogate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.subrogated@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.subrogate({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/subrogate \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimSubrogate@1",
"value": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "subrogating",
"subrogationId": "subro_25698160",
"atFaultParty": "third-party-carrier",
"demand": {
"amount": "271392",
"currency": "USD"
},
"openedAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"claimNumber": "CLM-B4D7434E",
"vin": "5N1AZ3DSXTC105411",
"status": "subrogating",
"subrogationId": "subro_25698160",
"atFaultParty": "third-party-carrier",
"demand": {
"amount": "271392",
"currency": "USD"
},
"openedAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "insurance-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}supplement
insuranceClaim.supplement · POST /insurance-claims/supplement · gate offer · sandbox · answers InsuranceClaimSupplement@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5N1AZ3DSXTC105411 (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.
Emits — InsuranceClaim.supplemented@1.
import { insuranceClaim } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await insuranceClaim.supplement({"vin":"5N1AZ3DSXTC105411"})curl -X POST https://apis.vin/insurance-claims/supplement \
-H 'content-type: application/json' \
-d '{"vin":"5N1AZ3DSXTC105411"}'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.
{
"type": "OK",
"answers": "InsuranceClaimSupplement@1",
"value": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"evidence": {
"vin": "5N1AZ3DSXTC105411",
"noun": "insuranceClaim",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "claim-desk-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.
Claim
Schema
| Property | Type | Notes |
|---|---|---|
id | id | clm_ |
vin | string | — |
lossType | enum | — |
adjusterId | ref→Party | — |
acv | money | — |
settlement | money | — |
status | ClaimFSM | — |
Relationships
| From | To | Cardinality | As |
|---|---|---|---|
insuranceClaim | vehicle | *:1 | on |
insuranceClaim | insurance | 1:0..1 | against |
insuranceClaim | salvage | 1:0..1 | total-loss to |
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.
InsuranceClaim · Class model
InsuranceClaim · State machine
InsuranceClaim · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
infotainment
The infotainment noun — identity, lifecycle, events, and every capability as an anchored section: 14 capabilities, 2 live, 12 sandbox, 0 declared.
insurer
The insurer noun — identity, lifecycle, events, and every capability as an anchored section: 19 capabilities, 0 live, 19 sandbox, 0 declared.