docs.vin

title.quote

Quote — the commerce face of title (transact it), at `POST /titles/quote`.

Promoted — earned, computed, recomputed on every regen

This capability earned a standalone page by the computed promotion function (2 of 4 signals): price posted + carries its own stateSet. Its frozen address never moved — /catalog/title#quote still answers as an anchored section on the noun page. Promotion is a regen event, not a meeting: lose the signals and this page folds back to the anchor while the redirect map retargets automatically.

Sandbox — a caller mode, never a status claim

The key selects the mode. Wire-compatible simulated responses, deterministic and replayable. Every payload is provenance-labeled { environment, simulated } in the body itself — where the row's live rail is a certified connection, it is live via connection: certified, connect to activate. Connecting is the ceremony: a credential submission at integrates.vin (dealer systems) or connects.vin (consumer accounts) enters the activation queue, and submissions rank live rollout.

Noun title · Pillar Commerce

Descriptor

The catalog row, rendered. This is the same descriptor that answers GET /catalog?select=….

FieldValue
Nountitle
FacetCommerce
Sideboth
PillarCommerce
Kindact
Statussandbox
Gatenone
Mandatenone
Priceposted at /pricing
Doortitle.vin
MotionsB2A · B2A2C

The two spellings

One capability, two addresses — generated from one descriptor, so they cannot disagree:

  • The catalog nametitle.quote. What the SDK, the CLI, and the MCP index call it.
  • The wire routePOST /titles/quote. What HTTP calls it.

Call it

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await title.quote({"vin":"4S4GUHM69T3775945","work":"transfer","state":"state"})
POST /titles/quote
curl -X POST https://apis.vin/titles/quote \
  -H 'content-type: application/json' \
  -d '{"vin":"4S4GUHM69T3775945","work":"transfer","state":"state"}'

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.291Z · HTTP 200
{
  "type": "OK",
  "answers": "TitleQuote@1",
  "value": {
    "quoteId": "TFE-1",
    "state": "state",
    "filingType": "paper",
    "lineItems": [
      {
        "code": "title-fee",
        "label": "Title fee",
        "amountCents": 1500
      },
      {
        "code": "registration-fee",
        "label": "Registration fee",
        "amountCents": 6500
      },
      {
        "code": "plate-fee",
        "label": "Plate/transfer fee",
        "amountCents": 2500
      },
      {
        "code": "doc-fee",
        "label": "Filing/doc fee",
        "amountCents": 8500
      }
    ],
    "totalCents": 19000,
    "currency": "USD"
  },
  "evidence": {
    "quoteId": "TFE-1",
    "state": "state",
    "filingType": "paper",
    "lineItems": [
      {
        "code": "title-fee",
        "label": "Title fee",
        "amountCents": 1500
      },
      {
        "code": "registration-fee",
        "label": "Registration fee",
        "amountCents": 6500
      },
      {
        "code": "plate-fee",
        "label": "Plate/transfer fee",
        "amountCents": 2500
      },
      {
        "code": "doc-fee",
        "label": "Filing/doc fee",
        "amountCents": 8500
      }
    ],
    "totalCents": 19000,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "title-registration-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": true
  }
}

Input

FieldTypeRequiredNotes
vinstringyes
workstringyesone of transfer, lien-release, correction, duplicate, bonded, out-of-state-convert
statestringyes

Answers

A typed OK envelope carrying TitleQuote@1. Every fact inside it is an evidence object — { value, source, timestamp, verification } — and act-minted facts carry a dereferenceable pointer to the event that minted them. Absence is typed (EMPTY), never a faked 200.

The gate

This capability is open — no gate; a keyless read.

The door

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

On success this capability appends to the record and emits:

Subscribe on the universal /webhooks rail, or replay from the subject snapshot.

Composed by

Workflows that lean on this leaf: sell-trade · private-party · refinance · lease-return.

Data model

Backs the Title entity. See the schema, relationships, and state set on title and in the data model.


Generated from the catalog descriptor. It shows only what the descriptor declares — the provider behind a fact is never named here; evidence source names the attesting authority at the estate's own level of abstraction.