routing
The routing noun — identity, lifecycle, events, and every capability as an anchored section: 14 capabilities, 0 live, 14 sandbox, 0 declared.
routing 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 | routing |
| Pillar | Data (facets: 6 data · 6 services · 2 commerce) |
| Capabilities | 14 — 0 live · 14 sandbox · 0 declared |
| Entities | Payment |
| Doors | aggregator.vin |
| SDK | Vin.routing.* from apis.vin |
| Address | /catalog/routing#{action} — the anchor IS the wire name minus routing. |
Events
The vocabulary this noun can append to the record — 9 past-tense, versioned event types, each linked to the capability that emits it:
Routing.evaluated@1— emitted byevaluateRouting.executed@1— emitted byexecuteRouting.failed@1— emitted byfeeAllocate·optimizeNetRouting.failedOver@1— emitted byfallbackRouting.feeAllocated@1— emitted byfeeAllocateRouting.netOptimized@1— emitted byoptimizeNetRouting.reRouted@1— emitted byreRouteRouting.routed@1— emitted byrouteRouting.split@1— emitted bysplit
Discover & read
read
routing.read · GET /routings/read · gate none · sandbox · answers RoutingRead@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FW6S02J4122726 (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 { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.read({"vin":"1G1FW6S02J4122726"})curl 'https://apis.vin/routings/read?vin=1G1FW6S02J4122726'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": "RoutingRead@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"plan": {
"id": "RTE-492555a1",
"mode": "rail",
"status": "en-route",
"loadId": "LD-f2fb9d84"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"plan": {
"id": "RTE-492555a1",
"mode": "rail",
"status": "en-route",
"loadId": "LD-f2fb9d84"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}audit
routing.audit · GET /routings/audit · gate key · sandbox · answers RoutingAudit@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FW6S02J4122726 (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 { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.audit({"vin":"1G1FW6S02J4122726"})curl 'https://apis.vin/routings/audit?vin=1G1FW6S02J4122726'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": "RoutingAudit@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"audit": {
"planId": "RTE-492555a1",
"entries": [
{
"event": "planned",
"date": "2026-08-06"
},
{
"event": "executed",
"date": "2026-08-07"
}
]
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"audit": {
"planId": "RTE-492555a1",
"entries": [
{
"event": "planned",
"date": "2026-08-06"
},
{
"event": "executed",
"date": "2026-08-07"
}
]
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}spread
routing.spread · GET /routings/spread · gate key · sandbox · answers RoutingSpread@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FW6S02J4122726 (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 { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.spread({"vin":"1G1FW6S02J4122726"})curl 'https://apis.vin/routings/spread?vin=1G1FW6S02J4122726'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": "RoutingSpread@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"spread": {
"planId": "RTE-492555a1",
"basisCents": 89500,
"currency": "USD",
"shares": [
{
"leg": "drayage",
"sharePct": 15
},
{
"leg": "linehaul",
"sharePct": 70
},
{
"leg": "lastmile",
"sharePct": 15
}
]
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"spread": {
"planId": "RTE-492555a1",
"basisCents": 89500,
"currency": "USD",
"shares": [
{
"leg": "drayage",
"sharePct": 15
},
{
"leg": "linehaul",
"sharePct": 70
},
{
"leg": "lastmile",
"sharePct": 15
}
]
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}feeAllocate
routing.feeAllocate · POST /routings/fee-allocate · gate offer · sandbox · answers RoutingFeeAllocate@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) · /1G1FW6S02J4122726 (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 — Routing.failed@1 · Routing.feeAllocated@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.feeAllocate({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/fee-allocate \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingFeeAllocate@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"allocation": {
"planId": "RTE-492555a1",
"totalCents": 89500,
"currency": "USD",
"legs": [
{
"leg": "drayage",
"amountCents": 13425,
"sharePct": 15
},
{
"leg": "linehaul",
"amountCents": 62650,
"sharePct": 70
},
{
"leg": "lastmile",
"amountCents": 13425,
"sharePct": 15
}
],
"status": "allocated"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"allocation": {
"planId": "RTE-492555a1",
"totalCents": 89500,
"currency": "USD",
"legs": [
{
"leg": "drayage",
"amountCents": 13425,
"sharePct": 15
},
{
"leg": "linehaul",
"amountCents": 62650,
"sharePct": 70
},
{
"leg": "lastmile",
"amountCents": 13425,
"sharePct": 15
}
],
"status": "allocated"
},
"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
}
}Fulfill & operate
execute
routing.execute · POST /routings/execute · gate offer · sandbox · answers RoutingExecute@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) · /1G1FW6S02J4122726 (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 — Routing.executed@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.execute({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/execute \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingExecute@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"execution": {
"status": "already-executing"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"execution": {
"status": "already-executing"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}split
routing.split · POST /routings/split · gate offer · sandbox · answers RoutingSplit@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) · /1G1FW6S02J4122726 (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 — Routing.split@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.split({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/split \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingSplit@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"split": {
"planId": "RTE-492555a1",
"totalCents": 89500,
"currency": "USD",
"legs": [
{
"leg": "drayage",
"amountCents": 13425,
"sharePct": 15
},
{
"leg": "linehaul",
"amountCents": 62650,
"sharePct": 70
},
{
"leg": "lastmile",
"amountCents": 13425,
"sharePct": 15
}
]
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"split": {
"planId": "RTE-492555a1",
"totalCents": 89500,
"currency": "USD",
"legs": [
{
"leg": "drayage",
"amountCents": 13425,
"sharePct": 15
},
{
"leg": "linehaul",
"amountCents": 62650,
"sharePct": 70
},
{
"leg": "lastmile",
"amountCents": 13425,
"sharePct": 15
}
]
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
candidates
routing.candidates · GET /routings/candidates · gate key · sandbox · answers RoutingCandidates@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FW6S02J4122726 (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 { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.candidates({"vin":"1G1FW6S02J4122726"})curl 'https://apis.vin/routings/candidates?vin=1G1FW6S02J4122726'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": "RoutingCandidates@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"candidates": [
{
"mode": "rail",
"rateCents": 53700
},
{
"mode": "ocean",
"rateCents": 71600
},
{
"mode": "road",
"rateCents": 89500
}
]
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"candidates": [
{
"mode": "rail",
"rateCents": 53700
},
{
"mode": "ocean",
"rateCents": 71600
},
{
"mode": "road",
"rateCents": 89500
}
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}constraints
routing.constraints · GET /routings/constraints · gate key · sandbox · answers RoutingConstraints@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FW6S02J4122726 (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 { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.constraints({"vin":"1G1FW6S02J4122726"})curl 'https://apis.vin/routings/constraints?vin=1G1FW6S02J4122726'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": "RoutingConstraints@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"constraints": {
"enclosedRequired": false,
"hazmat": false,
"maxTransitDays": 14
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"constraints": {
"enclosedRequired": false,
"hazmat": false,
"maxTransitDays": 14
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}evaluate
routing.evaluate · POST /routings/evaluate · gate offer · sandbox · answers RoutingEvaluate@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) · /1G1FW6S02J4122726 (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 — Routing.evaluated@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.evaluate({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/evaluate \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingEvaluate@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"evaluation": {
"planId": "RTE-492555a1",
"best": "rail",
"netCents": 53700,
"currency": "USD"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"evaluation": {
"planId": "RTE-492555a1",
"best": "rail",
"netCents": 53700,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}fallback
routing.fallback · POST /routings/fallback · gate offer · sandbox · answers RoutingFallback@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) · /1G1FW6S02J4122726 (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 — Routing.failedOver@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.fallback({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/fallback \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingFallback@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"fallback": {
"planId": "RTE-492555a1",
"mode": "ocean",
"rateCents": 71600,
"currency": "USD"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"fallback": {
"planId": "RTE-492555a1",
"mode": "ocean",
"rateCents": 71600,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}optimizeNet
routing.optimizeNet · POST /routings/optimize-net · gate offer · sandbox · answers RoutingOptimizeNet@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) · /1G1FW6S02J4122726 (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 — Routing.failed@1 · Routing.netOptimized@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.optimizeNet({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/optimize-net \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingOptimizeNet@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"evaluation": {
"planId": "RTE-492555a1",
"best": "rail",
"netCents": 53700,
"currency": "USD"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"evaluation": {
"planId": "RTE-492555a1",
"best": "rail",
"netCents": 53700,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rank
routing.rank · GET /routings/rank · gate key · sandbox · answers RoutingRank@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FW6S02J4122726 (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 { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.rank({"vin":"1G1FW6S02J4122726"})curl 'https://apis.vin/routings/rank?vin=1G1FW6S02J4122726'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": "RoutingRank@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"ranking": [
{
"rank": 1,
"mode": "rail",
"rateCents": 53700
},
{
"rank": 2,
"mode": "ocean",
"rateCents": 71600
},
{
"rank": 3,
"mode": "road",
"rateCents": 89500
}
]
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"ranking": [
{
"rank": 1,
"mode": "rail",
"rateCents": 53700
},
{
"rank": 2,
"mode": "ocean",
"rateCents": 71600
},
{
"rank": 3,
"mode": "road",
"rateCents": 89500
}
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}reRoute
routing.reRoute · POST /routings/re-route · gate offer · sandbox · answers RoutingReRoute@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) · /1G1FW6S02J4122726 (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 — Routing.reRouted@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.reRoute({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/re-route \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingReRoute@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"reroute": {
"planId": "RTE-492555a1",
"status": "rerouted",
"mode": "rail"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"reroute": {
"planId": "RTE-492555a1",
"status": "rerouted",
"mode": "rail"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "long-haul-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}route
routing.route · POST /routings/route · gate offer · sandbox · answers RoutingRoute@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) · /1G1FW6S02J4122726 (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 — Routing.routed@1.
import { routing } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await routing.route({"vin":"1G1FW6S02J4122726"})curl -X POST https://apis.vin/routings/route \
-H 'content-type: application/json' \
-d '{"vin":"1G1FW6S02J4122726"}'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": "RoutingRoute@1",
"value": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"plan": {
"id": "RTE-492555a1",
"mode": "rail",
"legs": [
"drayage",
"linehaul",
"lastmile"
],
"status": "planned"
}
},
"evidence": {
"vin": "1G1FW6S02J4122726",
"noun": "routing",
"asOf": "2026-08-10",
"phase": "InTransit",
"plan": {
"id": "RTE-492555a1",
"mode": "rail",
"legs": [
"drayage",
"linehaul",
"lastmile"
],
"status": "planned"
}
},
"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.
Payment
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 3 diagrams, rendered from the estate model.
Routing · Class model
Routing · State machine
Routing · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.