eTitle
The eTitle noun — identity, lifecycle, events, and every capability as an anchored section: 8 capabilities, 0 live, 8 sandbox, 0 declared.
eTitle is one of the estate's 317 automotive nouns — a job a car needs done. It carries 8 capabilities: 0 live, 8 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | eTitle |
| Pillar | Services (facets: 2 data · 4 services · 2 commerce) |
| Capabilities | 8 — 0 live · 8 sandbox · 0 declared |
| Entities | Title |
| Doors | aggregator.vin |
| SDK | Vin.eTitle.* from apis.vin |
| Address | /catalog/eTitle#{action} — the anchor IS the wire name minus eTitle. |
Events
The vocabulary this noun can append to the record — 14 past-tense, versioned event types, each linked to the capability that emits it:
ETitle.enrollRequested@1— emitted byenrollETitle.enrolled@1— emitted byenrollETitle.feeCharged@1— emitted byfeeETitle.feeRequested@1— emitted byfeeETitle.held@1— emitted byholdETitle.holdRequested@1— emitted byholdETitle.paid@1— emitted bypayETitle.payFailed@1— emitted bypayETitle.payRequested@1— emitted bypayETitle.printRequested@1— emitted byprintETitle.printed@1— emitted byprintETitle.transferFailed@1— emitted bytransferETitle.transferRequested@1— emitted bytransferETitle.transferred@1— emitted bytransfer
Discover & read
lookup
eTitle.lookup · GET /e-titles/lookup · gate none · sandbox · answers ETitleLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJC5DB9PX015473 (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 { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.lookup({"vin":"5TFJC5DB9PX015473"})curl 'https://apis.vin/e-titles/lookup?vin=5TFJC5DB9PX015473'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": "ETitleLookup@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"record": {
"id": "LIEN-09da9c2f",
"standing": "perfected",
"lienholder": {
"fsId": "F00SET",
"name": "Southeast Toyota Finance"
},
"medium": "electronic"
},
"paper": {
"standing": "in-process",
"position": "Ordered"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"record": {
"id": "LIEN-09da9c2f",
"standing": "perfected",
"lienholder": {
"fsId": "F00SET",
"name": "Southeast Toyota Finance"
},
"medium": "electronic"
},
"paper": {
"standing": "in-process",
"position": "Ordered"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}status
eTitle.status · GET /e-titles/status · gate none · sandbox · answers ETitleStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJC5DB9PX015473 (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 { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.status({"vin":"5TFJC5DB9PX015473"})curl 'https://apis.vin/e-titles/status?vin=5TFJC5DB9PX015473'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": "ETitleStatus@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"record": {
"id": "LIEN-09da9c2f",
"standing": "perfected",
"lienholder": {
"fsId": "F00SET",
"name": "Southeast Toyota Finance"
},
"medium": "electronic"
},
"paper": {
"standing": "in-process",
"position": "Ordered"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"record": {
"id": "LIEN-09da9c2f",
"standing": "perfected",
"lienholder": {
"fsId": "F00SET",
"name": "Southeast Toyota Finance"
},
"medium": "electronic"
},
"paper": {
"standing": "in-process",
"position": "Ordered"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
fee
eTitle.fee · POST /e-titles/fee · gate offer · sandbox · answers ETitleFee@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) · /5TFJC5DB9PX015473 (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 — ETitle.feeCharged@1 · ETitle.feeRequested@1.
import { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.fee({"vin":"5TFJC5DB9PX015473"})curl -X POST https://apis.vin/e-titles/fee \
-H 'content-type: application/json' \
-d '{"vin":"5TFJC5DB9PX015473"}'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": "ETitleFee@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"fee": {
"amountCents": 19000,
"currency": "USD",
"basis": "posted-title-rail-total"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"fee": {
"amountCents": 19000,
"currency": "USD",
"basis": "posted-title-rail-total"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
enroll
eTitle.enroll · POST /e-titles/enroll · gate offer · sandbox · answers ETitleEnroll@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) · /5TFJC5DB9PX015473 (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 — ETitle.enrollRequested@1 · ETitle.enrolled@1.
import { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.enroll({"vin":"5TFJC5DB9PX015473"})curl -X POST https://apis.vin/e-titles/enroll \
-H 'content-type: application/json' \
-d '{"vin":"5TFJC5DB9PX015473"}'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": "ETitleEnroll@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"enrollment": {
"status": "already-enrolled",
"id": "LIEN-09da9c2f",
"medium": "electronic",
"position": "Ordered"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"enrollment": {
"status": "already-enrolled",
"id": "LIEN-09da9c2f",
"medium": "electronic",
"position": "Ordered"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
eTitle.pay · POST /e-titles/pay · gate offer · sandbox · answers ETitlePay@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) · /5TFJC5DB9PX015473 (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 — ETitle.paid@1 · ETitle.payFailed@1 · ETitle.payRequested@1.
import { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.pay({"vin":"5TFJC5DB9PX015473"})curl -X POST https://apis.vin/e-titles/pay \
-H 'content-type: application/json' \
-d '{"vin":"5TFJC5DB9PX015473"}'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": "ETitlePay@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"payment": {
"id": "PAY-29ccf881",
"amountCents": 19000,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"payment": {
"id": "PAY-29ccf881",
"amountCents": 19000,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
eTitle.print · POST /e-titles/print · gate offer · sandbox · answers ETitlePrint@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) · /5TFJC5DB9PX015473 (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 — ETitle.printRequested@1 · ETitle.printed@1.
import { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.print({"vin":"5TFJC5DB9PX015473"})curl -X POST https://apis.vin/e-titles/print \
-H 'content-type: application/json' \
-d '{"vin":"5TFJC5DB9PX015473"}'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": "ETitlePrint@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"print": {
"status": "print-ordered",
"id": "ETP-e693b37f",
"recordId": "LIEN-09da9c2f",
"readyBy": "2026-08-15"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"print": {
"status": "print-ordered",
"id": "ETP-e693b37f",
"recordId": "LIEN-09da9c2f",
"readyBy": "2026-08-15"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
hold
eTitle.hold · POST /e-titles/hold · gate offer · sandbox · answers ETitleHold@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) · /5TFJC5DB9PX015473 (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 — ETitle.held@1 · ETitle.holdRequested@1.
import { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.hold({"vin":"5TFJC5DB9PX015473"})curl -X POST https://apis.vin/e-titles/hold \
-H 'content-type: application/json' \
-d '{"vin":"5TFJC5DB9PX015473"}'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": "ETitleHold@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"hold": {
"status": "hold-placed",
"id": "ETH-4d6325e5",
"recordId": "LIEN-09da9c2f",
"position": "Ordered"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"hold": {
"status": "hold-placed",
"id": "ETH-4d6325e5",
"recordId": "LIEN-09da9c2f",
"position": "Ordered"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
transfer
eTitle.transfer · POST /e-titles/transfer · gate offer · sandbox · answers ETitleTransfer@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) · /5TFJC5DB9PX015473 (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 — ETitle.transferFailed@1 · ETitle.transferRequested@1 · ETitle.transferred@1.
import { eTitle } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await eTitle.transfer({"vin":"5TFJC5DB9PX015473"})curl -X POST https://apis.vin/e-titles/transfer \
-H 'content-type: application/json' \
-d '{"vin":"5TFJC5DB9PX015473"}'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": "ETitleTransfer@1",
"value": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"transfer": {
"status": "title-not-yet-issued",
"position": "Ordered"
}
},
"evidence": {
"vin": "5TFJC5DB9PX015473",
"noun": "eTitle",
"asOf": "2026-08-10",
"titleId": "TTL-83820c1b",
"state": "AZ",
"brands": [],
"docType": "eTitle",
"status": "Ordered",
"transfer": {
"status": "title-not-yet-issued",
"position": "Ordered"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-tail-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.
Title
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
esignature
The esignature noun — identity, lifecycle, events, and every capability as an anchored section: 10 capabilities, 0 live, 10 sandbox, 0 declared.
evBattery
The evBattery noun — identity, lifecycle, events, and every capability as an anchored section: 25 capabilities, 0 live, 25 sandbox, 0 declared.