body
The body noun — identity, lifecycle, events, and every capability as an anchored section: 15 capabilities, 0 live, 15 sandbox, 0 declared.
body 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 aggregator.vin.
Identity
| Noun | body |
| Pillar | Services (facets: 5 data · 7 services · 3 commerce) |
| Capabilities | 15 — 0 live · 15 sandbox · 0 declared |
| Entities | Collision |
| Doors | aggregator.vin |
| SDK | Vin.body.* from apis.vin |
| Address | /catalog/body#{action} — the anchor IS the wire name minus body. |
Events
The vocabulary this noun can append to the record — 12 past-tense, versioned event types, each linked to the capability that emits it:
Body.charged@1— emitted bypayBody.dentPulled@1— emitted bydentPullBody.estimated@1— emitted byestimateBody.filled@1— emitted byfillerBody.frameStraightened@1— emitted byframeStraightenBody.ordered@1— emitted byorderBody.panelReplaced@1— emitted bypanelReplaceBody.primed@1— emitted byprimeBody.sanded@1— emitted bysandBody.welded@1— emitted byweldOrder.placed@1— emitted byorderServiceOrder.settled@1— emitted byorder·pay
Discover & read
assess
body.assess · GET /bodies/assess · gate none · sandbox · answers BodyAssess@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5XYP5DGC8PG326978 (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 { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.assess({"vin":"5XYP5DGC8PG326978"})curl 'https://apis.vin/bodies/assess?vin=5XYP5DGC8PG326978'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": "BodyAssess@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"assessment": {
"severity": "none",
"grade": "clean",
"panels": 0,
"structural": false,
"paintWork": "none-needed"
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"assessment": {
"severity": "none",
"grade": "clean",
"panels": 0,
"structural": false,
"paintWork": "none-needed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}measure
body.measure · GET /bodies/measure · gate none · sandbox · answers BodyMeasure@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5XYP5DGC8PG326978 (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 { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.measure({"vin":"5XYP5DGC8PG326978"})curl 'https://apis.vin/bodies/measure?vin=5XYP5DGC8PG326978'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": "BodyMeasure@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"frame": {
"withinTolerance": true,
"structural": false
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"frame": {
"withinTolerance": true,
"structural": false
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}frameToleranceRead
body.frameToleranceRead · GET /bodies/frame-tolerance-read · gate none · sandbox · answers BodyFrameToleranceRead@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5XYP5DGC8PG326978 (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 { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.frameToleranceRead({"vin":"5XYP5DGC8PG326978"})curl 'https://apis.vin/bodies/frame-tolerance-read?vin=5XYP5DGC8PG326978'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": "BodyFrameToleranceRead@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"frame": {
"withinTolerance": true,
"structural": false
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"frame": {
"withinTolerance": true,
"structural": false
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
estimate
body.estimate · POST /bodies/estimate · gate offer · sandbox · answers BodyEstimate@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) · /5XYP5DGC8PG326978 (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 — Body.estimated@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.estimate({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/estimate \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyEstimate@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"estimate": {
"status": "no-loss-recorded",
"amountCents": 0,
"currency": "USD"
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"estimate": {
"status": "no-loss-recorded",
"amountCents": 0,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
order
body.order · POST /bodies/order · gate offer · sandbox · answers BodyOrder@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) · /5XYP5DGC8PG326978 (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 — Body.ordered@1 · Order.placed@1 · ServiceOrder.settled@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.order({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/order \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyOrder@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"order": {
"id": "ORD-2d3ca778",
"item": "body panels",
"status": "nothing-to-order",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"order": {
"id": "ORD-2d3ca778",
"item": "body panels",
"status": "nothing-to-order",
"amountCents": 0,
"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
}
}Pay & settle
pay
body.pay · POST /bodies/pay · gate offer · sandbox · answers BodyPay@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) · /5XYP5DGC8PG326978 (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 — Body.charged@1 · ServiceOrder.settled@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.pay({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/pay \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyPay@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"payment": {
"id": "PAY-0775070e",
"status": "settled",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"payment": {
"id": "PAY-0775070e",
"status": "settled",
"amountCents": 0,
"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
}
}Fulfill & operate
panelReplace
body.panelReplace · POST /bodies/panel-replace · gate offer · sandbox · answers BodyPanelReplace@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) · /5XYP5DGC8PG326978 (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 — Body.panelReplaced@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.panelReplace({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/panel-replace \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyPanelReplace@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "panelReplace",
"status": "no-open-repair"
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "panelReplace",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
damageMap
body.damageMap · GET /bodies/damage-map · gate none · sandbox · answers BodyDamageMap@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5XYP5DGC8PG326978 (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 { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.damageMap({"vin":"5XYP5DGC8PG326978"})curl 'https://apis.vin/bodies/damage-map?vin=5XYP5DGC8PG326978'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": "BodyDamageMap@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"damageMap": {
"panels": [],
"count": 0
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"damageMap": {
"panels": [],
"count": 0
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}dentPull
body.dentPull · POST /bodies/dent-pull · gate offer · sandbox · answers BodyDentPull@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) · /5XYP5DGC8PG326978 (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 — Body.dentPulled@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.dentPull({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/dent-pull \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyDentPull@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "dentPull",
"status": "no-open-repair"
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "dentPull",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}filler
body.filler · POST /bodies/filler · gate offer · sandbox · answers BodyFiller@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) · /5XYP5DGC8PG326978 (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 — Body.filled@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.filler({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/filler \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyFiller@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "filler",
"status": "no-open-repair"
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "filler",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}frameStraighten
body.frameStraighten · POST /bodies/frame-straighten · gate offer · sandbox · answers BodyFrameStraighten@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) · /5XYP5DGC8PG326978 (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 — Body.frameStraightened@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.frameStraighten({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/frame-straighten \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyFrameStraighten@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "frameStraighten",
"status": "no-open-repair"
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "frameStraighten",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}panelId
body.panelId · GET /bodies/panel-id · gate none · sandbox · answers BodyPanelId@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5XYP5DGC8PG326978 (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 { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.panelId({"vin":"5XYP5DGC8PG326978"})curl 'https://apis.vin/bodies/panel-id?vin=5XYP5DGC8PG326978'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": "BodyPanelId@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"panel": {
"status": "no-damage-recorded"
}
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"panel": {
"status": "no-damage-recorded"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}prime
body.prime · POST /bodies/prime · gate offer · sandbox · answers BodyPrime@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) · /5XYP5DGC8PG326978 (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 — Body.primed@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.prime({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/prime \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyPrime@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "prime",
"status": "no-open-repair"
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "prime",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}sand
body.sand · POST /bodies/sand · gate offer · sandbox · answers BodySand@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) · /5XYP5DGC8PG326978 (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 — Body.sanded@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.sand({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/sand \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodySand@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "sand",
"status": "no-open-repair"
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "sand",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}weld
body.weld · POST /bodies/weld · gate offer · sandbox · answers BodyWeld@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) · /5XYP5DGC8PG326978 (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 — Body.welded@1.
import { body } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await body.weld({"vin":"5XYP5DGC8PG326978"})curl -X POST https://apis.vin/bodies/weld \
-H 'content-type: application/json' \
-d '{"vin":"5XYP5DGC8PG326978"}'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": "BodyWeld@1",
"value": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "weld",
"status": "no-open-repair"
},
"evidence": {
"vin": "5XYP5DGC8PG326978",
"noun": "body",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "weld",
"status": "no-open-repair"
},
"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.
Collision
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.
Body · Class model
Body · State machine
Body · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.