provider
The provider noun — identity, lifecycle, events, and every capability as an anchored section: 34 capabilities, 0 live, 34 sandbox, 0 declared.
provider is one of the estate's 317 automotive nouns — a job a car needs done. It carries 34 capabilities: 0 live, 34 sandbox, 0 declared · doors services.vin · aggregator.vin.
Identity
| Noun | provider |
| Pillar | Services (facets: 12 data · 13 services · 9 commerce) |
| Capabilities | 34 — 0 live · 34 sandbox · 0 declared |
| Entities | Provider |
| Doors | aggregator.vin · services.vin |
| SDK | Vin.provider.* from apis.vin |
| Address | /catalog/provider#{action} — the anchor IS the wire name minus provider. |
Events
The vocabulary this noun can append to the record — 40 past-tense, versioned event types, each linked to the capability that emits it:
Job.accepted@1— emitted bydispatchJob.assigned@1— emitted bydispatchJob.offered@1— emitted bydispatchProvider.accepted@1— emitted byacceptProvider.assignRequested@1— emitted byassignProvider.assigned@1— emitted byassignProvider.chargebackRequested@1— emitted bychargebackProvider.chargebacked@1— emitted bychargebackProvider.completed@1— emitted bycompleteProvider.contractRequested@1— emitted bycontractProvider.contracted@1— emitted bycontractProvider.credentialed@1— emitted bycredential·dispatchProvider.deactivateRequested@1— emitted bydeactivateProvider.deactivated@1— emitted bydeactivateProvider.dispatchFailed@1— emitted bydispatchProvider.dispatchRequested@1— emitted bydispatchProvider.dispatched@1— emitted bydispatchProvider.failed@1— emitted byinvoice·order·pay·quoteProvider.invoiced@1— emitted byinvoiceProvider.oemCertified@1— emitted byoemCertifyProvider.onboardRequested@1— emitted byonboardProvider.onboarded@1— emitted bydispatch·onboardProvider.ordered@1— emitted byorderProvider.paid@1— emitted bydispatch·payProvider.payFailed@1— emitted bypayProvider.payRequested@1— emitted bypayProvider.performed@1— emitted byperformProvider.privileged@1— emitted byprivilegeProvider.quoteRequested@1— emitted byquoteRequestProvider.quoted@1— emitted byquoteProvider.rateRequested@1— emitted byrateProvider.rated@1— emitted byrateProvider.rebateRequested@1— emitted byrebateProvider.rebated@1— emitted byrebateProvider.referred@1— emitted byreferProvider.registered@1— emitted byregisterProvider.requested@1— emitted bydispatch·order·performProvider.settleFailed@1— emitted bysettleProvider.settleRequested@1— emitted bysettleProvider.settled@1— emitted bysettle
Discover & read
lookup
provider.lookup · GET /providers/lookup · gate none · sandbox · answers ProviderLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.lookup({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/lookup?vin=1GKS2BKD0PR361110'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": "ProviderLookup@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"provider": {
"id": "PRV-9adec772",
"class": "inspection-service",
"standing": "good",
"mobile": true
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"provider": {
"id": "PRV-9adec772",
"class": "inspection-service",
"standing": "good",
"mobile": true
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}read
provider.read · GET /providers/read · gate none · sandbox · answers ProviderRead@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.read({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/read?vin=1GKS2BKD0PR361110'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": "ProviderRead@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"provider": {
"id": "PRV-9adec772",
"class": "inspection-service",
"standing": "good",
"mobile": true
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"provider": {
"id": "PRV-9adec772",
"class": "inspection-service",
"standing": "good",
"mobile": true
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}availability
provider.availability · GET /providers/availability · gate none · sandbox · answers ProviderAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.availability({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/availability?vin=1GKS2BKD0PR361110'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": "ProviderAvailability@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"slotsOpen": 1,
"nextSlotDate": "2026-08-12"
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"slotsOpen": 1,
"nextSlotDate": "2026-08-12"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}locate
provider.locate · GET /providers/locate · gate none · sandbox · answers ProviderLocate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.locate({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/locate?vin=1GKS2BKD0PR361110'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": "ProviderLocate@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"position": {
"latE5": 3779800,
"lonE5": -12241817
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"position": {
"latE5": 3779800,
"lonE5": -12241817
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}capacity
provider.capacity · GET /providers/capacity · gate key · sandbox · answers ProviderCapacity@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.capacity({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/capacity?vin=1GKS2BKD0PR361110'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": "ProviderCapacity@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"slotsOpen": 1,
"nextSlotDate": "2026-08-12"
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"slotsOpen": 1,
"nextSlotDate": "2026-08-12"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}slaHistory
provider.slaHistory · GET /providers/sla-history · gate none · sandbox · answers ProviderSlaHistory@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.slaHistory({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/sla-history?vin=1GKS2BKD0PR361110'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": "ProviderSlaHistory@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"onTimePct": 95,
"jobsCompleted": 35
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"onTimePct": 95,
"jobsCompleted": 35
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}certificationVerify
provider.certificationVerify · GET /providers/certification-verify · gate key · sandbox · answers ProviderCertificationVerify@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.certificationVerify({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/certification-verify?vin=1GKS2BKD0PR361110'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": "ProviderCertificationVerify@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"verified": true,
"credential": "certified-inspector",
"standing": "good"
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"verified": true,
"credential": "certified-inspector",
"standing": "good"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}credentialVerify
provider.credentialVerify · GET /providers/credential-verify · gate none · sandbox · answers ProviderCredentialVerify@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.credentialVerify({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/credential-verify?vin=1GKS2BKD0PR361110'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": "ProviderCredentialVerify@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"verified": true,
"credential": "certified-inspector",
"standing": "good"
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"verified": true,
"credential": "certified-inspector",
"standing": "good"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
provider.quote · POST /providers/quote · gate offer · sandbox · answers ProviderQuote@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.failed@1 · Provider.quoted@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.quote({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/quote \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderQuote@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"quote": {
"id": "PQ-a7072e49",
"amountCents": 12500,
"currency": "USD",
"status": "extended"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"quote": {
"id": "PQ-a7072e49",
"amountCents": 12500,
"currency": "USD",
"status": "extended"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rate
provider.rate · POST /providers/rate · gate offer · sandbox · answers ProviderRate@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.rateRequested@1 · Provider.rated@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.rate({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/rate \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderRate@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"rateCentsPerHour": 16500,
"currency": "USD",
"priceLevel": "network"
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"rateCentsPerHour": 16500,
"currency": "USD",
"priceLevel": "network"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rebate
provider.rebate · POST /providers/rebate · gate offer · sandbox · answers ProviderRebate@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.rebateRequested@1 · Provider.rebated@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.rebate({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/rebate \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderRebate@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"rebate": {
"id": "RB-2cac4a44",
"amountCents": 2000,
"currency": "USD",
"status": "issued"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"rebate": {
"id": "RB-2cac4a44",
"amountCents": 2000,
"currency": "USD",
"status": "issued"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
order
provider.order · POST /providers/order · gate offer · sandbox · answers ProviderOrder@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.failed@1 · Provider.ordered@1 · Provider.requested@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.order({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/order \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderOrder@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"order": {
"id": "ORD-e6636891",
"service": "inspection",
"status": "placed",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"order": {
"id": "ORD-e6636891",
"service": "inspection",
"status": "placed",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}register
provider.register · POST /providers/register · gate offer · sandbox · answers ProviderRegister@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.registered@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.register({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/register \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderRegister@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-5c243192",
"step": "register",
"status": "registered"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-5c243192",
"step": "register",
"status": "registered"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}onboard
provider.onboard · POST /providers/onboard · gate offer · sandbox · answers ProviderOnboard@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.onboardRequested@1 · Provider.onboarded@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.onboard({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/onboard \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderOnboard@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-20cbe89a",
"step": "onboard",
"status": "onboarded"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-20cbe89a",
"step": "onboard",
"status": "onboarded"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}assign
provider.assign · POST /providers/assign · gate offer · sandbox · answers ProviderAssign@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.assignRequested@1 · Provider.assigned@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.assign({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/assign \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderAssign@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"assignment": {
"id": "AS-0cbc7e96",
"position": "Passed",
"status": "completed"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"assignment": {
"id": "AS-0cbc7e96",
"position": "Passed",
"status": "completed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}dispatch
provider.dispatch · POST /providers/dispatch · gate human · sandbox · answers DispatchJob@1
| Field | Type | Required | Notes |
|---|---|---|---|
service | string | yes | the leaf being fulfilled, e.g. inspection|roadside|recon |
vin | string | yes | — |
orderId | string | no | — |
location | object | no | — |
credential | string | no | required credential for the job |
The gate is a 403 NEEDS_HUMAN — the human verb authorize (credential: provider-credential) · supply side, routed to a named, staffed, priced terminus with a poll rail. Never a dead end. Price: not posted — see /pricing.
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Job.accepted@1 · Job.assigned@1 · Job.offered@1 · Provider.credentialed@1 · Provider.dispatchFailed@1 · Provider.dispatchRequested@1 · Provider.dispatched@1 · Provider.onboarded@1 · Provider.paid@1 · Provider.requested@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.dispatch({"service":"service","vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/dispatch \
-H 'content-type: application/json' \
-d '{"service":"service","vin":"1GKS2BKD0PR361110"}'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": "DispatchJob@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"assignment": {
"id": "AS-0cbc7e96",
"position": "Passed",
"status": "completed"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"assignment": {
"id": "AS-0cbc7e96",
"position": "Passed",
"status": "completed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}credential
provider.credential · POST /providers/credential · gate offer · sandbox · answers ProviderCredential@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.credentialed@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.credential({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/credential \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderCredential@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-c84e8516",
"step": "credential",
"status": "credentialed"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-c84e8516",
"step": "credential",
"status": "credentialed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}quoteRequest
provider.quoteRequest · POST /providers/quote-request · gate offer · sandbox · answers ProviderQuoteRequest@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.quoteRequested@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.quoteRequest({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/quote-request \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderQuoteRequest@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"quote": {
"id": "PQ-a7072e49",
"amountCents": 12500,
"currency": "USD",
"status": "requested"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"quote": {
"id": "PQ-a7072e49",
"amountCents": 12500,
"currency": "USD",
"status": "requested"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
provider.pay · POST /providers/pay · gate offer · sandbox · answers ProviderPay@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.failed@1 · Provider.paid@1 · Provider.payFailed@1 · Provider.payRequested@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.pay({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/pay \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderPay@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"payment": {
"id": "PAY-e1f6a577",
"status": "settled",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"payment": {
"id": "PAY-e1f6a577",
"status": "settled",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}invoice
provider.invoice · POST /providers/invoice · gate offer · sandbox · answers ProviderInvoice@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.failed@1 · Provider.invoiced@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.invoice({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/invoice \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderInvoice@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"invoice": {
"id": "INV-1871eb7e",
"status": "issued",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"invoice": {
"id": "INV-1871eb7e",
"status": "issued",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}settle
provider.settle · POST /providers/settle · gate offer · sandbox · answers ProviderSettle@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.settleFailed@1 · Provider.settleRequested@1 · Provider.settled@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.settle({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/settle \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderSettle@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"payment": {
"id": "PAY-c4adad48",
"status": "settled",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"payment": {
"id": "PAY-c4adad48",
"status": "settled",
"amountCents": 12500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}chargeback
provider.chargeback · POST /providers/chargeback · gate offer · sandbox · answers ProviderChargeback@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.chargebackRequested@1 · Provider.chargebacked@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.chargeback({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/chargeback \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderChargeback@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"chargeback": {
"id": "CBK-42121f18",
"status": "no-grounds",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"chargeback": {
"id": "CBK-42121f18",
"status": "no-grounds",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
perform
provider.perform · POST /providers/perform · gate offer · sandbox · answers ProviderPerform@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.performed@1 · Provider.requested@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.perform({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/perform \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderPerform@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"work": {
"id": "WK-f5bc0158",
"operation": "perform",
"status": "completed",
"outcome": "passed"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"work": {
"id": "WK-f5bc0158",
"operation": "perform",
"status": "completed",
"outcome": "passed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}complete
provider.complete · POST /providers/complete · gate offer · sandbox · answers ProviderComplete@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.completed@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.complete({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/complete \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderComplete@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"work": {
"id": "WK-fb41f5cc",
"operation": "complete",
"status": "completed",
"outcome": "passed"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"work": {
"id": "WK-fb41f5cc",
"operation": "complete",
"status": "completed",
"outcome": "passed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
accept
provider.accept · POST /providers/accept · gate offer · sandbox · answers ProviderAccept@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.accepted@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.accept({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/accept \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderAccept@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"assignment": {
"id": "AS-0cbc7e96",
"position": "Passed",
"status": "completed"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"assignment": {
"id": "AS-0cbc7e96",
"position": "Passed",
"status": "completed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}oemCertify
provider.oemCertify · POST /providers/oem-certify · gate key · sandbox · answers ProviderOemCertify@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.oemCertified@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.oemCertify()curl -X POST https://apis.vin/providers/oem-certify \
-H 'content-type: application/json' \
-d '{}'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": "ProviderOemCertify@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-f60f1458",
"verified": true,
"credential": "factory-certified-inspector",
"standing": "good"
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-f60f1458",
"verified": true,
"credential": "factory-certified-inspector",
"standing": "good"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
deactivate
provider.deactivate · POST /providers/deactivate · gate offer · sandbox · answers ProviderDeactivate@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.deactivateRequested@1 · Provider.deactivated@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.deactivate({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/deactivate \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderDeactivate@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-fb6acc8d",
"status": "deactivated"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-fb6acc8d",
"status": "deactivated"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
capabilities
provider.capabilities · GET /providers/capabilities · gate key · sandbox · answers ProviderCapabilities@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.capabilities({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/capabilities?vin=1GKS2BKD0PR361110'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": "ProviderCapabilities@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"services": [
"inspection",
"condition-report",
"photo-capture"
],
"mobile": true
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"services": [
"inspection",
"condition-report",
"photo-capture"
],
"mobile": true
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}capability
provider.capability · GET /providers/capability · gate none · sandbox · answers ProviderCapability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.capability({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/capability?vin=1GKS2BKD0PR361110'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": "ProviderCapability@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"services": [
"inspection",
"condition-report",
"photo-capture"
],
"mobile": true
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"services": [
"inspection",
"condition-report",
"photo-capture"
],
"mobile": true
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}contract
provider.contract · POST /providers/contract · gate offer · sandbox · answers ProviderContract@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 — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.contractRequested@1 · Provider.contracted@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.contract({"vin":"1GKS2BKD0PR361110"})curl -X POST https://apis.vin/providers/contract \
-H 'content-type: application/json' \
-d '{"vin":"1GKS2BKD0PR361110"}'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": "ProviderContract@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-afd898f9",
"step": "contract",
"status": "contracted"
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"enrollment": {
"id": "EN-afd898f9",
"step": "contract",
"status": "contracted"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}geo
provider.geo · GET /providers/geo · gate none · sandbox · answers ProviderGeo@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.geo({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/geo?vin=1GKS2BKD0PR361110'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": "ProviderGeo@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"position": {
"latE5": 3779800,
"lonE5": -12241817
}
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"position": {
"latE5": 3779800,
"lonE5": -12241817
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}pricing
provider.pricing · GET /providers/pricing · gate none · sandbox · answers ProviderPricing@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — services.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.pricing({"vin":"1GKS2BKD0PR361110"})curl 'https://apis.vin/providers/pricing?vin=1GKS2BKD0PR361110'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": "ProviderPricing@1",
"value": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"rateCentsPerHour": 16500,
"currency": "USD",
"priceLevel": "network"
},
"evidence": {
"vin": "1GKS2BKD0PR361110",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-9adec772",
"rateCentsPerHour": 16500,
"currency": "USD",
"priceLevel": "network"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}privilege
provider.privilege · POST /providers/privilege · gate key · sandbox · answers ProviderPrivilege@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.privileged@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.privilege()curl -X POST https://apis.vin/providers/privilege \
-H 'content-type: application/json' \
-d '{}'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": "ProviderPrivilege@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-f60f1458",
"privileges": [
"inspect",
"grade",
"publish-report"
]
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-f60f1458",
"privileges": [
"inspect",
"grade",
"publish-report"
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}refer
provider.refer · POST /providers/refer · gate key · sandbox · answers ProviderRefer@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GKS2BKD0PR361110 (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 — Provider.referred@1.
import { provider } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await provider.refer()curl -X POST https://apis.vin/providers/refer \
-H 'content-type: application/json' \
-d '{}'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": "ProviderRefer@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-f60f1458",
"referral": {
"id": "RF-a9b86b4d",
"status": "referred",
"toProviderId": "PRV-eb047427"
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "provider",
"asOf": "2026-08-10",
"providerId": "PRV-f60f1458",
"referral": {
"id": "RF-a9b86b4d",
"status": "referred",
"toProviderId": "PRV-eb047427"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "counterparty-logistics-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.
Provider
Schema
| Property | Type |
|---|---|
services | string[] |
credentials | Credential[] |
Relationships
| From | To | Cardinality | As |
|---|---|---|---|
order | provider | *:1 | dispatched to |
party | provider | ISA | is-a |
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 7 diagrams, rendered from the estate model.
Provider · Class model
Provider · State machine
Provider · State machine
Provider · Class model
Provider · State machine
Provider · State machine
Provider · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.