docs.vin

incentive

The incentive noun — identity, lifecycle, events, and every capability as an anchored section: 16 capabilities, 5 live, 11 sandbox, 0 declared.

incentive is one of the estate's 317 automotive nouns — a job a car needs done. It carries 16 capabilities: 5 live, 11 sandbox, 0 declared · doors aggregator.vin · fi.vin.

Identity

Nounincentive
PillarData (facets: 7 data · 6 services · 3 commerce)
Capabilities16 — 5 live · 11 sandbox · 0 declared
EntitiesDeal
Doorsaggregator.vin · fi.vin
SDKVin.incentive.* from apis.vin
Address/catalog/incentive#{action} — the anchor IS the wire name minus incentive.

Events

The vocabulary this noun can append to the record — 10 past-tense, versioned event types, each linked to the capability that emits it:

Discover & read

lookup

incentive.lookup · GET /incentives/lookup · gate none · live · answers IncentiveLookup@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C63R5FL9TG280381 (the VIN lens).

Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.

the SDK — incentive.lookup
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.lookup({"vin":"3C63R5FL9TG280381"})
GET /incentives/lookup
curl 'https://apis.vin/incentives/lookup?vin=3C63R5FL9TG280381'

read

incentive.read · GET /incentives/read · gate none · live · answers IncentiveRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C63R5FL9TG280381 (the VIN lens).

Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.

the SDK — incentive.read
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.read({"vin":"3C63R5FL9TG280381"})
GET /incentives/read
curl 'https://apis.vin/incentives/read?vin=3C63R5FL9TG280381'

get

incentive.get · GET /incentives/get · gate none · live · answers IncentiveSet@1

FieldTypeRequiredNotes
vinstringyes
regionstringno
zipstringno

Doorfi.vin serves this noun on its two routes: / (the landing) · /3C63R5FL9TG280381 (the VIN lens).

Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.

the SDK — incentive.get
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.get({"vin":"3C63R5FL9TG280381"})
GET /incentives/get
curl 'https://apis.vin/incentives/get?vin=3C63R5FL9TG280381'

history

incentive.history · GET /incentives/history · gate none · sandbox · answers IncentiveHistory@1

FieldTypeRequiredNotes
vinstringno

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

the SDK — incentive.history
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.history({"vin":"3C63R5FL9TG280381"})
GET /incentives/history
curl 'https://apis.vin/incentives/history?vin=3C63R5FL9TG280381'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.440Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveHistory@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "history": {
      "entries": [
        {
          "event": "quoted",
          "programId": "IPG-ceceedad",
          "amountCents": 807400
        },
        {
          "event": "applied",
          "dealId": "DL-7b2d4447"
        }
      ],
      "count": 2
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "history": {
      "entries": [
        {
          "event": "quoted",
          "programId": "IPG-ceceedad",
          "amountCents": 807400
        },
        {
          "event": "applied",
          "dealId": "DL-7b2d4447"
        }
      ],
      "count": 2
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

eligibility

incentive.eligibility · GET /incentives/eligibility · gate key · live · answers IncentiveEligibility@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C63R5FL9TG280381 (the VIN lens).

Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.

the SDK — incentive.eligibility
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.eligibility({"vin":"3C63R5FL9TG280381"})
GET /incentives/eligibility
curl 'https://apis.vin/incentives/eligibility?vin=3C63R5FL9TG280381'

validate

incentive.validate · POST /incentives/validate · gate offer · sandbox · answers IncentiveValidate@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.validated@1.

the SDK — incentive.validate
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.validate({"vin":"3C63R5FL9TG280381"})
POST /incentives/validate
curl -X POST https://apis.vin/incentives/validate \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.476Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveValidate@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "validation": {
      "status": "valid",
      "programId": "IPG-ceceedad",
      "dealId": "DL-7b2d4447",
      "checks": [
        "program-active",
        "deal-on-file"
      ],
      "itemCount": 3
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "validation": {
      "status": "valid",
      "programId": "IPG-ceceedad",
      "dealId": "DL-7b2d4447",
      "checks": [
        "program-active",
        "deal-on-file"
      ],
      "itemCount": 3
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

incentive.quote · POST /incentives/quote · gate offer · sandbox · answers IncentiveQuote@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.failed@1 · Incentive.quoted@1.

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.quote({"vin":"3C63R5FL9TG280381"})
POST /incentives/quote
curl -X POST https://apis.vin/incentives/quote \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.474Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveQuote@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "itemCount": 3,
    "items": [
      {
        "kind": "customer-cash",
        "incentiveRef": "INC-1E7JANZ",
        "amount": {
          "amount": "1982.00",
          "currency": "USD"
        },
        "stackable": true
      },
      {
        "kind": "loyalty",
        "incentiveRef": "INC-1B1CYKY",
        "amount": {
          "amount": "2994.00",
          "currency": "USD"
        },
        "stackable": true
      },
      {
        "kind": "conquest",
        "incentiveRef": "INC-150E3K9",
        "amount": {
          "amount": "3098.00",
          "currency": "USD"
        },
        "stackable": false
      }
    ],
    "total": {
      "amount": "8074.00",
      "currency": "USD"
    },
    "asOf": "2026-08-10"
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "itemCount": 3,
    "items": [
      {
        "kind": "customer-cash",
        "incentiveRef": "INC-1E7JANZ",
        "amount": {
          "amount": "1982.00",
          "currency": "USD"
        },
        "stackable": true
      },
      {
        "kind": "loyalty",
        "incentiveRef": "INC-1B1CYKY",
        "amount": {
          "amount": "2994.00",
          "currency": "USD"
        },
        "stackable": true
      },
      {
        "kind": "conquest",
        "incentiveRef": "INC-150E3K9",
        "amount": {
          "amount": "3098.00",
          "currency": "USD"
        },
        "stackable": false
      }
    ],
    "total": {
      "amount": "8074.00",
      "currency": "USD"
    },
    "asOf": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "market-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

apply

incentive.apply · POST /incentives/apply · gate offer · sandbox · answers IncentiveApply@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.applied@1.

the SDK — incentive.apply
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.apply({"vin":"3C63R5FL9TG280381"})
POST /incentives/apply
curl -X POST https://apis.vin/incentives/apply \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.436Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveApply@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "application": {
      "status": "applied",
      "id": "IAP-9dfb8e66",
      "dealId": "DL-7b2d4447",
      "programId": "IPG-ceceedad",
      "amountCents": 807400,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "application": {
      "status": "applied",
      "id": "IAP-9dfb8e66",
      "dealId": "DL-7b2d4447",
      "programId": "IPG-ceceedad",
      "amountCents": 807400,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

reconcile

incentive.reconcile · POST /incentives/reconcile · gate offer · sandbox · answers IncentiveReconcile@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.reconciled@1.

the SDK — incentive.reconcile
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.reconcile({"vin":"3C63R5FL9TG280381"})
POST /incentives/reconcile
curl -X POST https://apis.vin/incentives/reconcile \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.475Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveReconcile@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "reconciliation": {
      "claimStanding": "no-claim",
      "rdrStanding": "not-delivered",
      "position": "QUOTED",
      "claimedCents": 0,
      "paidCents": 0,
      "chargebackCents": 0,
      "netCents": 0,
      "currency": "USD",
      "basis": "one-total-law"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "reconciliation": {
      "claimStanding": "no-claim",
      "rdrStanding": "not-delivered",
      "position": "QUOTED",
      "claimedCents": 0,
      "paidCents": 0,
      "chargebackCents": 0,
      "netCents": 0,
      "currency": "USD",
      "basis": "one-total-law"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

chargeback

incentive.chargeback · POST /incentives/chargeback · gate offer · sandbox · answers IncentiveChargeback@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.chargedBack@1 · Incentive.failed@1.

the SDK — incentive.chargeback
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.chargeback({"vin":"3C63R5FL9TG280381"})
POST /incentives/chargeback
curl -X POST https://apis.vin/incentives/chargeback \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.437Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveChargeback@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "chargeback": {
      "status": "no-claim-on-file"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "chargeback": {
      "status": "no-claim-on-file"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

claimPay

incentive.claimPay · POST /incentives/claim-pay · gate offer · sandbox · answers IncentiveClaimPay@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.claimPaid@1 · Incentive.failed@1.

the SDK — incentive.claimPay
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.claimPay({"vin":"3C63R5FL9TG280381"})
POST /incentives/claim-pay
curl -X POST https://apis.vin/incentives/claim-pay \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.439Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveClaimPay@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "payment": {
      "status": "nothing-to-pay",
      "amountCents": 0,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "payment": {
      "status": "nothing-to-pay",
      "amountCents": 0,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

publish

incentive.publish · POST /incentives/publish · gate offer · sandbox · answers IncentivePublish@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.published@1.

the SDK — incentive.publish
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.publish({"vin":"3C63R5FL9TG280381"})
POST /incentives/publish
curl -X POST https://apis.vin/incentives/publish \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.461Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentivePublish@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "program": {
      "id": "IPG-ceceedad",
      "kinds": [
        {
          "kind": "customer-cash",
          "stackable": true
        },
        {
          "kind": "loyalty",
          "stackable": true
        },
        {
          "kind": "conquest",
          "stackable": false
        }
      ],
      "publishedOn": "2026-07-11",
      "expiresOn": "2026-09-09",
      "status": "published"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "program": {
      "id": "IPG-ceceedad",
      "kinds": [
        {
          "kind": "customer-cash",
          "stackable": true
        },
        {
          "kind": "loyalty",
          "stackable": true
        },
        {
          "kind": "conquest",
          "stackable": false
        }
      ],
      "publishedOn": "2026-07-11",
      "expiresOn": "2026-09-09",
      "status": "published"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

claim

incentive.claim · POST /incentives/claim · gate offer · sandbox · answers IncentiveClaim@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.claimFiled@1.

the SDK — incentive.claim
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.claim({"vin":"3C63R5FL9TG280381"})
POST /incentives/claim
curl -X POST https://apis.vin/incentives/claim \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.438Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveClaim@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "claim": {
      "status": "no-retail-delivery-reported",
      "rdrStanding": "not-delivered",
      "position": "QUOTED"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "claim": {
      "status": "no-retail-delivery-reported",
      "rdrStanding": "not-delivered",
      "position": "QUOTED"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dispute

incentive.dispute · POST /incentives/dispute · gate offer · sandbox · answers IncentiveDispute@1

FieldTypeRequiredNotes
vinstringno

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.

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

EmitsIncentive.disputed@1.

the SDK — incentive.dispute
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.dispute({"vin":"3C63R5FL9TG280381"})
POST /incentives/dispute
curl -X POST https://apis.vin/incentives/dispute \
  -H 'content-type: application/json' \
  -d '{"vin":"3C63R5FL9TG280381"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.440Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveDispute@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "dispute": {
      "status": "nothing-to-dispute",
      "claimStanding": "no-claim"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "dispute": {
      "status": "nothing-to-dispute",
      "claimStanding": "no-claim"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

expiry

incentive.expiry · GET /incentives/expiry · gate none · live · answers IncentiveExpiry@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C63R5FL9TG280381 (the VIN lens).

Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.

the SDK — incentive.expiry
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.expiry({"vin":"3C63R5FL9TG280381"})
GET /incentives/expiry
curl 'https://apis.vin/incentives/expiry?vin=3C63R5FL9TG280381'

stackability

incentive.stackability · GET /incentives/stackability · gate key · sandbox · answers IncentiveStackability@1

FieldTypeRequiredNotes
vinstringno

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

the SDK — incentive.stackability
import { incentive } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await incentive.stackability({"vin":"3C63R5FL9TG280381"})
GET /incentives/stackability
curl 'https://apis.vin/incentives/stackability?vin=3C63R5FL9TG280381'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:12.476Z · HTTP 200
{
  "type": "OK",
  "answers": "IncentiveStackability@1",
  "value": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "stackability": {
      "stackable": [
        "customer-cash",
        "loyalty"
      ],
      "excluded": [
        "conquest"
      ],
      "stackableTotalCents": 497600,
      "currency": "USD",
      "basis": "posted-program-sheet"
    }
  },
  "evidence": {
    "vin": "3C63R5FL9TG280381",
    "noun": "incentive",
    "asOf": "2026-08-10",
    "stackability": {
      "stackable": [
        "customer-cash",
        "loyalty"
      ],
      "excluded": [
        "conquest"
      ],
      "stackableTotalCents": 497600,
      "currency": "USD",
      "basis": "posted-program-sheet"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "deal-paper-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.

Deal

Modeled

The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 6 diagrams, rendered from the estate model.

Incentive · Class model

Incentive · State machine

Incentive · Class model

Incentive · State machine

Incentive · State machine

Incentive · Sequence


Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.