docs.vin

vsc

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

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

Identity

Nounvsc
PillarServices (facets: 4 data · 6 services · 6 commerce)
Capabilities16 — 0 live · 16 sandbox · 0 declared
EntitiesVsc
Doorsaggregator.vin
SDKVin.vsc.* from apis.vin
Address/catalog/vsc#{action} — the anchor IS the wire name minus vsc.

Lifecycle

VscVscAdjudicationFSM: 8 states, 10 transitions — Filed · Adjudicated · Approved · Denied · PartiallyApproved · Appealed · TeardownAuthorized · Paid. Each transition is a past-tense event on the record.

Events

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

Discover & read

eligibility

vsc.eligibility · GET /vscs/eligibility · gate key · sandbox · answers VscEligibility@1

FieldTypeRequiredNotes
vinstringno

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

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

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:18.851Z · HTTP 200
{
  "type": "OK",
  "answers": "VscEligibility@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "eligibility": {
      "eligible": true,
      "id": "VSC-a7f28c4c"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "eligibility": {
      "eligible": true,
      "id": "VSC-a7f28c4c"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

coverage

vsc.coverage · GET /vscs/coverage · gate key · sandbox · answers VscCoverage@1

FieldTypeRequiredNotes
vinstringno

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

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

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:18.851Z · HTTP 200
{
  "type": "OK",
  "answers": "VscCoverage@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "coverage": {
      "id": "VSC-a7f28c4c",
      "covered": true,
      "components": [
        "powertrain",
        "electrical",
        "hvac"
      ],
      "deductibleCents": 10000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "coverage": {
      "id": "VSC-a7f28c4c",
      "covered": true,
      "components": [
        "powertrain",
        "electrical",
        "hvac"
      ],
      "deductibleCents": 10000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

claimStatus

vsc.claimStatus · GET /vscs/claim-status · gate none · sandbox · answers VscClaimStatus@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await vsc.claimStatus({"vin":"1GKS2CKJ6HR184141"})
GET /vscs/claim-status
curl 'https://apis.vin/vscs/claim-status?vin=1GKS2CKJ6HR184141'

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:18.843Z · HTTP 200
{
  "type": "OK",
  "answers": "VscClaimStatus@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "claim": {
      "id": "VSC-a7f28c4c",
      "stance": "Filed"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "claim": {
      "id": "VSC-a7f28c4c",
      "stance": "Filed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

vsc.quote · POST /vscs/quote · gate offer · sandbox · answers VscQuote@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.

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

EmitsVsc.failed@1 · Vsc.quoted@1.

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

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

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:18.851Z · HTTP 200
{
  "type": "OK",
  "answers": "VscQuote@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "quote": {
      "id": "VSC-a7f28c4c",
      "productType": "VSC",
      "planCode": "VSC-PLAT",
      "terms": [
        {
          "termMonths": 36,
          "termMiles": 36000,
          "retailCents": 226100
        },
        {
          "termMonths": 48,
          "termMiles": 50000,
          "retailCents": 257000
        },
        {
          "termMonths": 60,
          "termMiles": 75000,
          "retailCents": 287900
        }
      ],
      "premiumCents": 207534,
      "currency": "USD",
      "tier": "super-prime"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "quote": {
      "id": "VSC-a7f28c4c",
      "productType": "VSC",
      "planCode": "VSC-PLAT",
      "terms": [
        {
          "termMonths": 36,
          "termMiles": 36000,
          "retailCents": 226100
        },
        {
          "termMonths": 48,
          "termMiles": 50000,
          "retailCents": 257000
        },
        {
          "termMonths": 60,
          "termMiles": 75000,
          "retailCents": 287900
        }
      ],
      "premiumCents": 207534,
      "currency": "USD",
      "tier": "super-prime"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

rate

vsc.rate · GET /vscs/rate · gate key · sandbox · answers VscRate@1

FieldTypeRequiredNotes
vinstringno

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

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

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:18.851Z · HTTP 200
{
  "type": "OK",
  "answers": "VscRate@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "quote": {
      "id": "VSC-a7f28c4c",
      "productType": "VSC",
      "planCode": "VSC-PLAT",
      "terms": [
        {
          "termMonths": 36,
          "termMiles": 36000,
          "retailCents": 226100
        },
        {
          "termMonths": 48,
          "termMiles": 50000,
          "retailCents": 257000
        },
        {
          "termMonths": 60,
          "termMiles": 75000,
          "retailCents": 287900
        }
      ],
      "premiumCents": 207534,
      "currency": "USD",
      "tier": "super-prime"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "quote": {
      "id": "VSC-a7f28c4c",
      "productType": "VSC",
      "planCode": "VSC-PLAT",
      "terms": [
        {
          "termMonths": 36,
          "termMiles": 36000,
          "retailCents": 226100
        },
        {
          "termMonths": 48,
          "termMiles": 50000,
          "retailCents": 257000
        },
        {
          "termMonths": 60,
          "termMiles": 75000,
          "retailCents": 287900
        }
      ],
      "premiumCents": 207534,
      "currency": "USD",
      "tier": "super-prime"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

reserve

vsc.reserve · POST /vscs/reserve · gate offer · sandbox · answers VscReserve@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.

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

EmitsVsc.failed@1 · Vsc.reinsuranceCeded@1.

the SDK — vsc.reserve
import { vsc } from 'apis.vin'

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

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:18.854Z · HTTP 200
{
  "type": "OK",
  "answers": "VscReserve@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "reserve": {
      "id": "VSC-a7f28c4c",
      "amountCents": 251563,
      "currency": "USD",
      "status": "held"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "reserve": {
      "id": "VSC-a7f28c4c",
      "amountCents": 251563,
      "currency": "USD",
      "status": "held"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

register

vsc.register · POST /vscs/register · gate offer · sandbox · answers VscRegister@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.

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

EmitsVsc.registered@1.

the SDK — vsc.register
import { vsc } from 'apis.vin'

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

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:18.852Z · HTTP 200
{
  "type": "OK",
  "answers": "VscRegister@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "contract": {
      "id": "VSC-a7f28c4c",
      "status": "registered",
      "deductibleCents": 10000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "contract": {
      "id": "VSC-a7f28c4c",
      "status": "registered",
      "deductibleCents": 10000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

vsc.pay · POST /vscs/pay · gate offer · sandbox · answers VscPay@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.

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

EmitsVsc.failed@1 · Vsc.paid@1.

the SDK — vsc.pay
import { vsc } from 'apis.vin'

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

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:18.851Z · HTTP 200
{
  "type": "OK",
  "answers": "VscPay@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-aff632e8",
      "amountCents": 207534,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-aff632e8",
      "amountCents": 207534,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

refund

vsc.refund · POST /vscs/refund · gate offer · sandbox · answers VscRefund@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.

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

EmitsVsc.failed@1 · Vsc.refunded@1.

the SDK — vsc.refund
import { vsc } from 'apis.vin'

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

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:18.851Z · HTTP 200
{
  "type": "OK",
  "answers": "VscRefund@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "refund": {
      "id": "VSC-a7f28c4c",
      "amountCents": 103767,
      "currency": "USD",
      "basis": "pro-rata",
      "status": "refunded"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "refund": {
      "id": "VSC-a7f28c4c",
      "amountCents": 103767,
      "currency": "USD",
      "basis": "pro-rata",
      "status": "refunded"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

claimPay

vsc.claimPay · POST /vscs/claim-pay · gate offer · sandbox · answers VscClaimPay@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.

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

EmitsVsc.claimPaid@1 · Vsc.failed@1.

the SDK — vsc.claimPay
import { vsc } from 'apis.vin'

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

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:18.840Z · HTTP 200
{
  "type": "OK",
  "answers": "VscClaimPay@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "payment": {
      "status": "not-yet-approved",
      "id": "VSC-a7f28c4c",
      "stance": "Filed"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "payment": {
      "status": "not-yet-approved",
      "id": "VSC-a7f28c4c",
      "stance": "Filed"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

claim

vsc.claim · POST /vscs/claim · gate offer · sandbox · answers VscClaim@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.

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

EmitsVsc.claimFiled@1.

the SDK — vsc.claim
import { vsc } from 'apis.vin'

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

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:18.828Z · HTTP 200
{
  "type": "OK",
  "answers": "VscClaim@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "claim": {
      "status": "already-on-file",
      "id": "VSC-a7f28c4c",
      "stance": "Filed"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "claim": {
      "status": "already-on-file",
      "id": "VSC-a7f28c4c",
      "stance": "Filed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

appeal

vsc.appeal · POST /vscs/appeal · gate key · sandbox · answers VscAppeal@1

FieldTypeRequiredNotes
vinstringno
reasonstringno

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

EmitsVsc.appealed@1.

the SDK — vsc.appeal
import { vsc } from 'apis.vin'

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

adjudicate

vsc.adjudicate · POST /vscs/adjudicate · gate key · sandbox · answers VscAdjudicate@1

No input — this capability takes no request body.

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

EmitsVsc.approved@1 · Vsc.claimAdjudicated@1 · Vsc.denied@1 · Vsc.partiallyApproved@1.

the SDK — vsc.adjudicate
import { vsc } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await vsc.adjudicate()
POST /vscs/adjudicate
curl -X POST https://apis.vin/vscs/adjudicate \
  -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:10.087Z · HTTP 200
{
  "type": "OK",
  "answers": "VscAdjudicate@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "adjudication": {
      "status": "no-claim-on-file"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "adjudication": {
      "status": "no-claim-on-file"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

transfer

vsc.transfer · POST /vscs/transfer · gate offer · sandbox · answers VscTransfer@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.

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

EmitsVsc.transferred@1.

the SDK — vsc.transfer
import { vsc } from 'apis.vin'

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

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:18.868Z · HTTP 200
{
  "type": "OK",
  "answers": "VscTransfer@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "transfer": {
      "id": "VSC-a7f28c4c",
      "status": "transferred",
      "to": "Ava Good"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "transfer": {
      "id": "VSC-a7f28c4c",
      "status": "transferred",
      "to": "Ava Good"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

cancel

vsc.cancel · POST /vscs/cancel · gate offer · sandbox · answers VscCancel@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.

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

EmitsVsc.canceled@1 · Vsc.failed@1 · Vsc.refunded@1.

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

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

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:18.828Z · HTTP 200
{
  "type": "OK",
  "answers": "VscCancel@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "cancellation": {
      "id": "VSC-a7f28c4c",
      "status": "cancelled",
      "basis": "pro-rata",
      "refundCents": 103767,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "cancellation": {
      "id": "VSC-a7f28c4c",
      "status": "cancelled",
      "basis": "pro-rata",
      "refundCents": 103767,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

contract

vsc.contract · POST /vscs/contract · gate offer · sandbox · answers VscContract@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.

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

EmitsVsc.contracted@1.

the SDK — vsc.contract
import { vsc } from 'apis.vin'

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

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:18.843Z · HTTP 200
{
  "type": "OK",
  "answers": "VscContract@1",
  "value": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "contract": {
      "id": "VSC-a7f28c4c",
      "status": "active",
      "deductibleCents": 10000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1GKS2CKJ6HR184141",
    "noun": "vsc",
    "asOf": "2026-08-10",
    "contract": {
      "id": "VSC-a7f28c4c",
      "status": "active",
      "deductibleCents": 10000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "risk-money-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.

Vsc

Schema

PropertyTypeNotes
ididvsc_
vinstring
holderIdref→Party
providerIdref→Provider
coveragestring
termstring
statusVscAdjudicationFSM

Relationships

FromToCardinalityAs
vscvehicle*:1covers

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.

Vsc · Class model

Vsc · State machine

Vsc · Sequence


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