valuation
The valuation noun — identity, lifecycle, events, and every capability as an anchored section: 13 capabilities, 5 live, 8 sandbox, 0 declared.
valuation is one of the estate's 317 automotive nouns — a job a car needs done. It carries 13 capabilities: 5 live, 8 sandbox, 0 declared · doors values.vin.
Identity
| Noun | valuation |
| Pillar | Data (facets: 9 data · 2 services · 2 commerce) |
| Capabilities | 13 — 5 live · 8 sandbox · 0 declared |
| Entities | Appraisal |
| Doors | values.vin |
| SDK | Vin.valuation.* from apis.vin |
| Address | /catalog/valuation#{action} — the anchor IS the wire name minus valuation. |
Events
The vocabulary this noun can append to the record — 7 past-tense, versioned event types, each linked to the capability that emits it:
ServiceOrder.settled@1— emitted bypayValuation.appraised@1— emitted byappraiseValuation.charged@1— emitted bypayValuation.recomputed@1— emitted byrecomputeValuation.subscribed@1— emitted bysubscribeValuation.valued@1— emitted bygetVehicle.valued@1— emitted byget
Discover & read
get
valuation.get · GET /valuations/get · gate key · live · answers Valuation@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | yes | — |
zip | string | no | — |
mileage | integer | no | — |
condition | string | no | one of rough, average, clean, outstanding |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (the VIN lens).
Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.
Emits — Valuation.valued@1 · Vehicle.valued@1.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.get({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/get?vin=1G1YA3D4XT5112142'Quote & price
appraise
valuation.appraise · POST /valuations/appraise · gate offer · sandbox · answers ValuationAppraise@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 — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 — Valuation.appraised@1.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.appraise({"vin":"1G1YA3D4XT5112142"})curl -X POST https://apis.vin/valuations/appraise \
-H 'content-type: application/json' \
-d '{"vin":"1G1YA3D4XT5112142"}'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": "ValuationAppraise@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"valuation": {
"status": "appraised",
"id": "APR-a5ce1ee8",
"amountCents": 1850000,
"currency": "USD",
"basis": "acquisition-figure"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"valuation": {
"status": "appraised",
"id": "APR-a5ce1ee8",
"amountCents": 1850000,
"currency": "USD",
"basis": "acquisition-figure"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}recompute
valuation.recompute · POST /valuations/recompute · gate offer · sandbox · answers ValuationRecompute@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 — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 — Valuation.recomputed@1.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.recompute({"vin":"1G1YA3D4XT5112142"})curl -X POST https://apis.vin/valuations/recompute \
-H 'content-type: application/json' \
-d '{"vin":"1G1YA3D4XT5112142"}'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": "ValuationRecompute@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"recomputation": {
"status": "recomputed",
"amountCents": 1850000,
"currency": "USD",
"unchanged": true,
"basis": "acquisition-figure"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"recomputation": {
"status": "recomputed",
"amountCents": 1850000,
"currency": "USD",
"unchanged": true,
"basis": "acquisition-figure"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}auctionValue
valuation.auctionValue · GET /valuations/auction-value · gate none · sandbox · answers ValuationAuctionValue@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.auctionValue({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/auction-value?vin=1G1YA3D4XT5112142'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": "ValuationAuctionValue@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"auction": {
"reserveCents": 1850000,
"currency": "USD",
"basis": "acquisition-figure-the-lane-reserve",
"position": "Scheduled"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"auction": {
"reserveCents": 1850000,
"currency": "USD",
"basis": "acquisition-figure-the-lane-reserve",
"position": "Scheduled"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
subscribe
valuation.subscribe · POST /valuations/subscribe · gate offer · sandbox · answers ValuationSubscribe@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 — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 — Valuation.subscribed@1.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.subscribe({"vin":"1G1YA3D4XT5112142"})curl -X POST https://apis.vin/valuations/subscribe \
-H 'content-type: application/json' \
-d '{"vin":"1G1YA3D4XT5112142"}'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": "ValuationSubscribe@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"subscription": {
"status": "subscribed",
"id": "VSUB-bbc44f3d"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"subscription": {
"status": "subscribed",
"id": "VSUB-bbc44f3d"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
valuation.pay · POST /valuations/pay · gate offer · sandbox · answers ValuationPay@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 — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 — ServiceOrder.settled@1 · Valuation.charged@1.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.pay({"vin":"1G1YA3D4XT5112142"})curl -X POST https://apis.vin/valuations/pay \
-H 'content-type: application/json' \
-d '{"vin":"1G1YA3D4XT5112142"}'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": "ValuationPay@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"payment": {
"status": "no-valuation-fee-posted"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"payment": {
"status": "no-valuation-fee-posted"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}trade
valuation.trade · GET /valuations/trade · gate none · live · answers ValuationTrade@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (the VIN lens).
Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.trade({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/trade?vin=1G1YA3D4XT5112142'More actions
conditionAdjust
valuation.conditionAdjust · GET /valuations/condition-adjust · gate none · sandbox · answers ValuationConditionAdjust@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.conditionAdjust({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/condition-adjust?vin=1G1YA3D4XT5112142'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": "ValuationConditionAdjust@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"adjustment": {
"grade": "clean",
"adjustmentBps": 0,
"adjustmentCents": 0,
"baseCents": 1850000,
"adjustedCents": 1850000,
"currency": "USD",
"basis": "posted-bps-on-the-acquisition-figure"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"adjustment": {
"grade": "clean",
"adjustmentBps": 0,
"adjustmentCents": 0,
"baseCents": 1850000,
"adjustedCents": 1850000,
"currency": "USD",
"basis": "posted-bps-on-the-acquisition-figure"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}marketTrend
valuation.marketTrend · GET /valuations/market-trend · gate none · sandbox · answers ValuationMarketTrend@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.marketTrend({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/market-trend?vin=1G1YA3D4XT5112142'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": "ValuationMarketTrend@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"trend": {
"status": "no-market-trend-posted",
"currentMarkCents": 1850000,
"currency": "USD",
"basis": "acquisition-figure"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"trend": {
"status": "no-market-trend-posted",
"currentMarkCents": 1850000,
"currency": "USD",
"basis": "acquisition-figure"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}residual
valuation.residual · GET /valuations/residual · gate none · sandbox · answers ValuationResidual@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (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 { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.residual({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/residual?vin=1G1YA3D4XT5112142'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": "ValuationResidual@1",
"value": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"residual": {
"status": "no-residual-schedule-posted"
}
},
"evidence": {
"vin": "1G1YA3D4XT5112142",
"noun": "valuation",
"asOf": "2026-08-10",
"appraisal": {
"status": "no-appraisal-on-file"
},
"residual": {
"status": "no-residual-schedule-posted"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "trade-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}retail
valuation.retail · GET /valuations/retail · gate none · live · answers ValuationRetail@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (the VIN lens).
Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.retail({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/retail?vin=1G1YA3D4XT5112142'tradeIn
valuation.tradeIn · GET /valuations/trade-in · gate none · live · answers ValuationTradeIn@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (the VIN lens).
Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.tradeIn({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/trade-in?vin=1G1YA3D4XT5112142'wholesale
valuation.wholesale · GET /valuations/wholesale · gate none · live · answers ValuationWholesale@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — values.vin serves this noun on its two routes: / (the landing) · /1G1YA3D4XT5112142 (the VIN lens).
Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.
import { valuation } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await valuation.wholesale({"vin":"1G1YA3D4XT5112142"})curl 'https://apis.vin/valuations/wholesale?vin=1G1YA3D4XT5112142'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.
Appraisal
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 2 diagrams, rendered from the estate model.
Valuation · Class model
Valuation · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.