toll
The toll noun — identity, lifecycle, events, and every capability as an anchored section: 14 capabilities, 0 live, 14 sandbox, 0 declared.
toll is one of the estate's 317 automotive nouns — a job a car needs done. It carries 14 capabilities: 0 live, 14 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | toll |
| Pillar | Data (facets: 5 data · 4 services · 5 commerce) |
| Capabilities | 14 — 0 live · 14 sandbox · 0 declared |
| Entities | Usage |
| Doors | aggregator.vin |
| SDK | Vin.toll.* from apis.vin |
| Address | /catalog/toll#{action} — the anchor IS the wire name minus toll. |
Events
The vocabulary this noun can append to the record — 22 past-tense, versioned event types, each linked to the capability that emits it:
Toll.assessRequested@1— emitted byassessToll.assessed@1— emitted byassessToll.chargeRequested@1— emitted bychargeToll.charged@1— emitted bychargeToll.disputeRequested@1— emitted bydisputeToll.disputed@1— emitted bydisputeToll.paid@1— emitted bypayToll.passThroughRequested@1— emitted bypassThroughToll.passedThrough@1— emitted bypassThroughToll.payFailed@1— emitted bypayToll.payRequested@1— emitted bypayToll.rated@1— emitted byrateToll.reimburseRequested@1— emitted byreimburseToll.reimbursed@1— emitted byreimburseToll.settleFailed@1— emitted bysettleToll.settleRequested@1— emitted bysettleToll.settled@1— emitted bysettleToll.tagProvisionRequested@1— emitted bytagProvisionToll.tagProvisioned@1— emitted bytagProvisionToll.violationPaid@1— emitted byviolationPayToll.violationPayFailed@1— emitted byviolationPayToll.violationPayRequested@1— emitted byviolationPay
Discover & read
history
toll.history · GET /tolls/history · gate none · sandbox · answers TollHistory@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FA6P8AM4G5250155 (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 { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.history({"vin":"1FA6P8AM4G5250155"})curl 'https://apis.vin/tolls/history?vin=1FA6P8AM4G5250155'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": "TollHistory@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"transactions": [
{
"id": "TX-c79155c4",
"plaza": "PLZ-49",
"date": "2026-08-08",
"amountCents": 611
},
{
"id": "TX-c8915757",
"plaza": "PLZ-48",
"date": "2026-08-09",
"amountCents": 1192
}
],
"accruedCents": 1803,
"currency": "USD"
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"transactions": [
{
"id": "TX-c79155c4",
"plaza": "PLZ-49",
"date": "2026-08-08",
"amountCents": 611
},
{
"id": "TX-c8915757",
"plaza": "PLZ-48",
"date": "2026-08-09",
"amountCents": 1192
}
],
"accruedCents": 1803,
"currency": "USD"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}assess
toll.assess · POST /tolls/assess · gate offer · sandbox · answers TollAssess@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) · /1FA6P8AM4G5250155 (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 — Toll.assessRequested@1 · Toll.assessed@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.assess({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/assess \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollAssess@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"assessment": {
"tagId": "TAG-1bfe615a",
"crossings": 2,
"accruedCents": 1803,
"currency": "USD"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"assessment": {
"tagId": "TAG-1bfe615a",
"crossings": 2,
"accruedCents": 1803,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}transactionLookup
toll.transactionLookup · GET /tolls/transaction-lookup · gate none · sandbox · answers TollTransactionLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FA6P8AM4G5250155 (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 { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.transactionLookup({"vin":"1FA6P8AM4G5250155"})curl 'https://apis.vin/tolls/transaction-lookup?vin=1FA6P8AM4G5250155'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": "TollTransactionLookup@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"transactions": [
{
"id": "TX-c79155c4",
"plaza": "PLZ-49",
"date": "2026-08-08",
"amountCents": 611
},
{
"id": "TX-c8915757",
"plaza": "PLZ-48",
"date": "2026-08-09",
"amountCents": 1192
}
],
"accruedCents": 1803,
"currency": "USD"
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"transactions": [
{
"id": "TX-c79155c4",
"plaza": "PLZ-49",
"date": "2026-08-08",
"amountCents": 611
},
{
"id": "TX-c8915757",
"plaza": "PLZ-48",
"date": "2026-08-09",
"amountCents": 1192
}
],
"accruedCents": 1803,
"currency": "USD"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}violationCheck
toll.violationCheck · GET /tolls/violation-check · gate none · sandbox · answers TollViolationCheck@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FA6P8AM4G5250155 (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 { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.violationCheck({"vin":"1FA6P8AM4G5250155"})curl 'https://apis.vin/tolls/violation-check?vin=1FA6P8AM4G5250155'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": "TollViolationCheck@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"violation": {
"status": "open",
"id": "TV-b7496071",
"penaltyCents": 2500,
"currency": "USD"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"violation": {
"status": "open",
"id": "TV-b7496071",
"penaltyCents": 2500,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
rate
toll.rate · GET /tolls/rate · gate key · sandbox · answers TollRate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FA6P8AM4G5250155 (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 — Toll.rated@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.rate({"vin":"1FA6P8AM4G5250155"})curl 'https://apis.vin/tolls/rate?vin=1FA6P8AM4G5250155'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": "TollRate@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"rate": {
"axle2Cents": 450,
"axle3Cents": 675,
"carHaulerCents": 1125,
"currency": "USD",
"authority": "toll-authority-sandbox"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"rate": {
"axle2Cents": 450,
"axle3Cents": 675,
"carHaulerCents": 1125,
"currency": "USD",
"authority": "toll-authority-sandbox"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
tagProvision
toll.tagProvision · POST /tolls/tag-provision · gate offer · sandbox · answers TollTagProvision@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) · /1FA6P8AM4G5250155 (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 — Toll.tagProvisionRequested@1 · Toll.tagProvisioned@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.tagProvision({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/tag-provision \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollTagProvision@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"tag": {
"id": "TAG-1bfe615a",
"status": "active",
"prepaidCents": 5000,
"currency": "USD"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"tag": {
"id": "TAG-1bfe615a",
"status": "active",
"prepaidCents": 5000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
toll.pay · POST /tolls/pay · gate offer · sandbox · answers TollPay@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) · /1FA6P8AM4G5250155 (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 — Toll.paid@1 · Toll.payFailed@1 · Toll.payRequested@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.pay({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/pay \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollPay@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-51c47f24",
"status": "settled",
"amountCents": 1803,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-51c47f24",
"status": "settled",
"amountCents": 1803,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}charge
toll.charge · POST /tolls/charge · gate offer · sandbox · answers TollCharge@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) · /1FA6P8AM4G5250155 (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 — Toll.chargeRequested@1 · Toll.charged@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.charge({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/charge \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollCharge@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"charge": {
"id": "TC-bcfce532",
"amountCents": 1803,
"currency": "USD",
"status": "charged"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"charge": {
"id": "TC-bcfce532",
"amountCents": 1803,
"currency": "USD",
"status": "charged"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}settle
toll.settle · POST /tolls/settle · gate offer · sandbox · answers TollSettle@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) · /1FA6P8AM4G5250155 (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 — Toll.settleFailed@1 · Toll.settleRequested@1 · Toll.settled@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.settle({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/settle \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollSettle@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-f900298d",
"status": "settled",
"amountCents": 1803,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-f900298d",
"status": "settled",
"amountCents": 1803,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}reimburse
toll.reimburse · POST /tolls/reimburse · gate offer · sandbox · answers TollReimburse@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) · /1FA6P8AM4G5250155 (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 — Toll.reimburseRequested@1 · Toll.reimbursed@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.reimburse({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/reimburse \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollReimburse@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"reimbursement": {
"id": "RB-2515cfb6",
"amountCents": 1803,
"currency": "USD",
"status": "reimbursed"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"reimbursement": {
"id": "RB-2515cfb6",
"amountCents": 1803,
"currency": "USD",
"status": "reimbursed"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}violationPay
toll.violationPay · POST /tolls/violation-pay · gate offer · sandbox · answers TollViolationPay@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) · /1FA6P8AM4G5250155 (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 — Toll.violationPaid@1 · Toll.violationPayFailed@1 · Toll.violationPayRequested@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.violationPay({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/violation-pay \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollViolationPay@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-ce6b9d7d",
"status": "settled",
"amountCents": 2500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-ce6b9d7d",
"status": "settled",
"amountCents": 2500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
dispute
toll.dispute · POST /tolls/dispute · gate offer · sandbox · answers TollDispute@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) · /1FA6P8AM4G5250155 (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 — Toll.disputeRequested@1 · Toll.disputed@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.dispute({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/dispute \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollDispute@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"dispute": {
"id": "TD-9b87d912",
"transactionId": "TX-c79155c4",
"status": "filed"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"dispute": {
"id": "TD-9b87d912",
"transactionId": "TX-c79155c4",
"status": "filed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
balance
toll.balance · GET /tolls/balance · gate none · sandbox · answers TollBalance@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FA6P8AM4G5250155 (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 { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.balance({"vin":"1FA6P8AM4G5250155"})curl 'https://apis.vin/tolls/balance?vin=1FA6P8AM4G5250155'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": "TollBalance@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"balance": {
"tagId": "TAG-1bfe615a",
"prepaidCents": 5000,
"accruedCents": 1803,
"remainingCents": 3197,
"currency": "USD"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"balance": {
"tagId": "TAG-1bfe615a",
"prepaidCents": 5000,
"accruedCents": 1803,
"remainingCents": 3197,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}passThrough
toll.passThrough · POST /tolls/pass-through · gate offer · sandbox · answers TollPassThrough@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) · /1FA6P8AM4G5250155 (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 — Toll.passThroughRequested@1 · Toll.passedThrough@1.
import { toll } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await toll.passThrough({"vin":"1FA6P8AM4G5250155"})curl -X POST https://apis.vin/tolls/pass-through \
-H 'content-type: application/json' \
-d '{"vin":"1FA6P8AM4G5250155"}'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": "TollPassThrough@1",
"value": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"passThrough": {
"amountCents": 1803,
"currency": "USD",
"status": "passed-through"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1FA6P8AM4G5250155",
"noun": "toll",
"asOf": "2026-08-10",
"passThrough": {
"amountCents": 1803,
"currency": "USD",
"status": "passed-through"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-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.
Usage
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.