docs.vin

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

Nounvaluation
PillarData (facets: 9 data · 2 services · 2 commerce)
Capabilities13 — 5 live · 8 sandbox · 0 declared
EntitiesAppraisal
Doorsvalues.vin
SDKVin.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:

Discover & read

get

valuation.get · GET /valuations/get · gate key · live · answers Valuation@1

FieldTypeRequiredNotes
vinstringyes
zipstringno
mileageintegerno
conditionstringnoone of rough, average, clean, outstanding

Doorvalues.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.

EmitsValuation.valued@1 · Vehicle.valued@1.

the SDK — valuation.get
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"})
GET /valuations/get
curl 'https://apis.vin/valuations/get?vin=1G1YA3D4XT5112142'

Quote & price

appraise

valuation.appraise · POST /valuations/appraise · gate offer · sandbox · answers ValuationAppraise@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.

Doorvalues.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.

EmitsValuation.appraised@1.

the SDK — valuation.appraise
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"})
POST /valuations/appraise
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.

receipt · executed 2026-08-17T12:42:18.763Z · HTTP 200
{
  "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

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.

Doorvalues.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.

EmitsValuation.recomputed@1.

the SDK — valuation.recompute
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"})
POST /valuations/recompute
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.

receipt · executed 2026-08-17T12:42:18.769Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.auctionValue
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"})
GET /valuations/auction-value
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.

receipt · executed 2026-08-17T12:42:18.763Z · HTTP 200
{
  "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

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.

Doorvalues.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.

EmitsValuation.subscribed@1.

the SDK — valuation.subscribe
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"})
POST /valuations/subscribe
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.

receipt · executed 2026-08-17T12:42:18.771Z · HTTP 200
{
  "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

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.

Doorvalues.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.

EmitsServiceOrder.settled@1 · Valuation.charged@1.

the SDK — valuation.pay
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"})
POST /valuations/pay
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.

receipt · executed 2026-08-17T12:42:18.765Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.trade
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"})
GET /valuations/trade
curl 'https://apis.vin/valuations/trade?vin=1G1YA3D4XT5112142'

More actions

conditionAdjust

valuation.conditionAdjust · GET /valuations/condition-adjust · gate none · sandbox · answers ValuationConditionAdjust@1

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.conditionAdjust
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"})
GET /valuations/condition-adjust
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.

receipt · executed 2026-08-17T12:42:18.764Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.marketTrend
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"})
GET /valuations/market-trend
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.

receipt · executed 2026-08-17T12:42:18.765Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.residual
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"})
GET /valuations/residual
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.

receipt · executed 2026-08-17T12:42:18.771Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.retail
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"})
GET /valuations/retail
curl 'https://apis.vin/valuations/retail?vin=1G1YA3D4XT5112142'

tradeIn

valuation.tradeIn · GET /valuations/trade-in · gate none · live · answers ValuationTradeIn@1

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.tradeIn
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"})
GET /valuations/trade-in
curl 'https://apis.vin/valuations/trade-in?vin=1G1YA3D4XT5112142'

wholesale

valuation.wholesale · GET /valuations/wholesale · gate none · live · answers ValuationWholesale@1

FieldTypeRequiredNotes
vinstringno

Doorvalues.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.

the SDK — valuation.wholesale
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"})
GET /valuations/wholesale
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.