mods
The mods noun — identity, lifecycle, events, and every capability as an anchored section: 15 capabilities, 0 live, 15 sandbox, 0 declared.
mods is one of the estate's 317 automotive nouns — a job a car needs done. It carries 15 capabilities: 0 live, 15 sandbox, 0 declared · doors mods.vin.
Identity
| Noun | mods |
| Pillar | Data (facets: 6 data · 5 services · 4 commerce) |
| Capabilities | 15 — 0 live · 15 sandbox · 0 declared |
| Entities | RepairOrder |
| Doors | mods.vin |
| SDK | Vin.mods.* from apis.vin |
| Address | /catalog/mods#{action} — the anchor IS the wire name minus mods. |
Events
The vocabulary this noun can append to the record — 10 past-tense, versioned event types, each linked to the capability that emits it:
Mod.upfitted@1— emitted byupfitMods.charged@1— emitted bypayMods.financed@1— emitted byfinanceMods.installed@1— emitted byinstallMods.purchased@1— emitted bybuyMods.quoted@1— emitted byquoteMods.registered@1— emitted byregisterMods.removed@1— emitted byremoveMods.tuned@1— emitted bytuneServiceOrder.settled@1— emitted bypay
Discover & read
fitment
mods.fitment · GET /mods/fitment · gate none · sandbox · answers ModsFitment@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.fitment({"vin":"5FNRL6H71RB009906"})curl 'https://apis.vin/mods/fitment?vin=5FNRL6H71RB009906'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": "ModsFitment@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"fitment": {
"compatible": true,
"kind": "cold-air-intake",
"requiresTune": false
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"fitment": {
"compatible": true,
"kind": "cold-air-intake",
"requiresTune": false
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}catalogLookup
mods.catalogLookup · GET /mods/catalog-lookup · gate none · sandbox · answers ModsCatalogLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.catalogLookup({"vin":"5FNRL6H71RB009906"})curl 'https://apis.vin/mods/catalog-lookup?vin=5FNRL6H71RB009906'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": "ModsCatalogLookup@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"item": {
"id": "CAT-99a47d5e",
"kind": "cold-air-intake",
"priceCents": 42000,
"currency": "USD"
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"item": {
"id": "CAT-99a47d5e",
"kind": "cold-air-intake",
"priceCents": 42000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
mods.quote · POST /mods/quote · gate offer · sandbox · answers ModsQuote@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.quoted@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.quote({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/quote \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsQuote@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"quote": {
"id": "MQ-2682bf15",
"kind": "cold-air-intake",
"amountCents": 42000,
"currency": "USD",
"status": "extended"
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"quote": {
"id": "MQ-2682bf15",
"kind": "cold-air-intake",
"amountCents": 42000,
"currency": "USD",
"status": "extended"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
register
mods.register · POST /mods/register · gate offer · sandbox · answers ModsRegister@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.registered@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.register({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/register \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsRegister@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"registration": {
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"status": "registered"
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"registration": {
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"status": "registered"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
mods.pay · POST /mods/pay · gate offer · sandbox · answers ModsPay@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.charged@1 · ServiceOrder.settled@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.pay({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/pay \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsPay@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-913f8783",
"status": "settled",
"amountCents": 42000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-913f8783",
"status": "settled",
"amountCents": 42000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}finance
mods.finance · POST /mods/finance · gate offer · sandbox · answers ModsFinance@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.financed@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.finance({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/finance \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsFinance@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"financing": {
"id": "MF-a0f4ecef",
"principalCents": 42000,
"months": 6,
"monthlyCents": 7000,
"currency": "USD",
"status": "financed"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"financing": {
"id": "MF-a0f4ecef",
"principalCents": 42000,
"months": 6,
"monthlyCents": 7000,
"currency": "USD",
"status": "financed"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}buy
mods.buy · POST /mods/buy · gate offer · sandbox · answers ModsBuy@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.purchased@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.buy({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/buy \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsBuy@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"purchase": {
"id": "MB-897064c1",
"kind": "cold-air-intake",
"amountCents": 42000,
"currency": "USD",
"status": "purchased"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"purchase": {
"id": "MB-897064c1",
"kind": "cold-air-intake",
"amountCents": 42000,
"currency": "USD",
"status": "purchased"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
install
mods.install · POST /mods/install · gate offer · sandbox · answers ModsInstall@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.installed@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.install({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/install \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsInstall@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"work": {
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"status": "installed"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"work": {
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"status": "installed"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}remove
mods.remove · POST /mods/remove · gate offer · sandbox · answers ModsRemove@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.removed@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.remove({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/remove \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsRemove@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"removal": {
"id": "MOD-3cfcea1d",
"status": "removed"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"removal": {
"id": "MOD-3cfcea1d",
"status": "removed"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
compatibility
mods.compatibility · GET /mods/compatibility · gate none · sandbox · answers ModsCompatibility@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.compatibility({"vin":"5FNRL6H71RB009906"})curl 'https://apis.vin/mods/compatibility?vin=5FNRL6H71RB009906'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": "ModsCompatibility@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"compatibility": {
"compatible": true,
"kind": "cold-air-intake",
"requiresTune": false
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"compatibility": {
"compatible": true,
"kind": "cold-air-intake",
"requiresTune": false
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}legality
mods.legality · GET /mods/legality · gate none · sandbox · answers ModsLegality@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.legality({"vin":"5FNRL6H71RB009906"})curl 'https://apis.vin/mods/legality?vin=5FNRL6H71RB009906'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": "ModsLegality@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"legality": {
"standing": "off-road-only",
"kind": "cold-air-intake"
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"legality": {
"standing": "off-road-only",
"kind": "cold-air-intake"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}registry
mods.registry · GET /mods/registry · gate key · sandbox · answers ModsRegistry@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | yes | — |
Door — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.registry({"vin":"5FNRL6H71RB009906"})curl 'https://apis.vin/mods/registry?vin=5FNRL6H71RB009906'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": "ModsRegistry@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"registry": {
"entries": [
{
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"installedDate": "2026-07-08"
}
],
"count": 1
}
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"registry": {
"entries": [
{
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"installedDate": "2026-07-08"
}
],
"count": 1
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}tune
mods.tune · POST /mods/tune · gate offer · sandbox · answers ModsTune@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mods.tuned@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.tune({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/tune \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsTune@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"tune": {
"id": "MOD-3cfcea1d",
"status": "tuned",
"kind": "performance-tune"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"tune": {
"id": "MOD-3cfcea1d",
"status": "tuned",
"kind": "performance-tune"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}upfit
mods.upfit · POST /mods/upfit · gate offer · sandbox · answers ModsUpfit@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 — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 — Mod.upfitted@1.
import { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.upfit({"vin":"5FNRL6H71RB009906"})curl -X POST https://apis.vin/mods/upfit \
-H 'content-type: application/json' \
-d '{"vin":"5FNRL6H71RB009906"}'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": "ModsUpfit@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"work": {
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"status": "upfitted"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"work": {
"id": "MOD-3cfcea1d",
"kind": "cold-air-intake",
"status": "upfitted"
},
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}warrantyImpact
mods.warrantyImpact · GET /mods/warranty-impact · gate none · sandbox · answers ModsWarrantyImpact@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — mods.vin serves this noun on its two routes: / (the landing) · /5FNRL6H71RB009906 (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 { mods } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mods.warrantyImpact({"vin":"5FNRL6H71RB009906"})curl 'https://apis.vin/mods/warranty-impact?vin=5FNRL6H71RB009906'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": "ModsWarrantyImpact@1",
"value": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"evidence": {
"vin": "5FNRL6H71RB009906",
"noun": "mods",
"asOf": "2026-08-10",
"warranty": "expired",
"impact": "coverage-expired-no-impact"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-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.
RepairOrder
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. One diagram, rendered from the estate model.
Mods · Class model
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
mobileService
The mobileService noun — identity, lifecycle, events, and every capability as an anchored section: 12 capabilities, 0 live, 12 sandbox, 0 declared.
moneyInstrument
The moneyInstrument noun — identity, lifecycle, events, and every capability as an anchored section: 3 capabilities, 0 live, 3 sandbox, 0 declared.