docs.vin

auction

The auction noun — identity, lifecycle, events, and every capability as an anchored section: 23 capabilities, 0 live, 23 sandbox, 0 declared.

auction is one of the estate's 317 automotive nouns — a job a car needs done. It carries 23 capabilities: 0 live, 23 sandbox, 0 declared · doors aggregator.vin · wholesale.vin · auction.vin.

Identity

Nounauction
PillarServices (facets: 7 data · 9 services · 7 commerce)
Capabilities23 — 0 live · 23 sandbox · 0 declared
EntitiesAuction
Doorsaggregator.vin · auction.vin · wholesale.vin
SDKVin.auction.* from apis.vin
Address/catalog/auction#{action} — the anchor IS the wire name minus auction.

Lifecycle

AuctionAuctionFSM: 9 states, 11 transitions — Scheduled · Open · Running · IfBid · NoSale · Sold · Settled · Disbursed · Closed. Each transition is a past-tense event on the record.

Events

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

Discover & read

lookup

auction.lookup · GET /auctions/lookup · gate none · sandbox · answers AuctionLookup@1

FieldTypeRequiredNotes
vinstringno

Doorauction.vin serves this noun on its two routes: / (the landing) · /5N1AZ2DJXRC126527 (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 — auction.lookup
import { auction } from 'apis.vin'

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

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:07.806Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionLookup@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "runRef": "RUN-04KBRHX",
    "laneRef": "LANE-07Y3UDW",
    "grade": "3.0",
    "announcements": [
      "structural-none"
    ],
    "asOf": "2026-08-10"
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "runRef": "RUN-04KBRHX",
    "laneRef": "LANE-07Y3UDW",
    "grade": "3.0",
    "announcements": [
      "structural-none"
    ],
    "asOf": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "market-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

read

auction.read · GET /auctions/read · gate none · sandbox · answers AuctionRead@1

FieldTypeRequiredNotes
vinstringno

Doorauction.vin serves this noun on its two routes: / (the landing) · /5N1AZ2DJXRC126527 (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 — auction.read
import { auction } from 'apis.vin'

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

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:07.816Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionRead@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "auction": {
      "id": "CSN-eb2cf49e",
      "position": "Scheduled",
      "lane": 4,
      "run": 67
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "auction": {
      "id": "CSN-eb2cf49e",
      "position": "Scheduled",
      "lane": 4,
      "run": 67
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

results

auction.results · GET /auctions/results · gate key · sandbox · answers AuctionResults@1

FieldTypeRequiredNotes
vinstringno

Doorauction.vin serves this noun on its two routes: / (the landing) · /5N1AZ2DJXRC126527 (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 — auction.results
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.results({"vin":"5N1AZ2DJXRC126527"})
GET /auctions/results
curl 'https://apis.vin/auctions/results?vin=5N1AZ2DJXRC126527'

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:07.818Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionResults@1",
  "value": {
    "laneRef": "LANE-07Y3UDW",
    "vin": "5N1AZ2DJXRC126527",
    "state": "sold",
    "salePrice": {
      "amount": "23651.00",
      "currency": "USD"
    },
    "bidCount": 0,
    "asOf": "2026-08-10"
  },
  "evidence": {
    "laneRef": "LANE-07Y3UDW",
    "vin": "5N1AZ2DJXRC126527",
    "state": "sold",
    "salePrice": {
      "amount": "23651.00",
      "currency": "USD"
    },
    "bidCount": 0,
    "asOf": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "market-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

runList

auction.runList · GET /auctions/run-list · gate key · sandbox · answers AuctionRunList@1

FieldTypeRequiredNotes
vinstringno

Doorauction.vin serves this noun on its two routes: / (the landing) · /5N1AZ2DJXRC126527 (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 — auction.runList
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.runList({"vin":"5N1AZ2DJXRC126527"})
GET /auctions/run-list
curl 'https://apis.vin/auctions/run-list?vin=5N1AZ2DJXRC126527'

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:07.818Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionRunList@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "runList": {
      "consignments": 9,
      "byPosition": {
        "Scheduled": 1,
        "Open": 1,
        "Running": 1,
        "IfBid": 1,
        "NoSale": 1,
        "Sold": 1,
        "Settled": 1,
        "Disbursed": 1,
        "Closed": 1
      }
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "runList": {
      "consignments": 9,
      "byPosition": {
        "Scheduled": 1,
        "Open": 1,
        "Running": 1,
        "IfBid": 1,
        "NoSale": 1,
        "Sold": 1,
        "Settled": 1,
        "Disbursed": 1,
        "Closed": 1
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

laneStatus

auction.laneStatus · GET /auctions/lane-status · gate key · sandbox · answers AuctionLaneStatus@1

FieldTypeRequiredNotes
vinstringno

Doorauction.vin serves this noun on its two routes: / (the landing) · /5N1AZ2DJXRC126527 (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 — auction.laneStatus
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.laneStatus({"vin":"5N1AZ2DJXRC126527"})
GET /auctions/lane-status
curl 'https://apis.vin/auctions/lane-status?vin=5N1AZ2DJXRC126527'

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:07.794Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionLaneStatus@1",
  "value": {
    "laneRef": "LANE-07Y3UDW",
    "state": "closed",
    "runsRemaining": 0,
    "currentRunRef": null,
    "asOf": "2026-08-10"
  },
  "evidence": {
    "laneRef": "LANE-07Y3UDW",
    "state": "closed",
    "runsRemaining": 0,
    "currentRunRef": null,
    "asOf": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "market-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

bid

auction.bid · POST /auctions/bid · gate offer · sandbox · answers WholesaleBid@1

FieldTypeRequiredNotes
vinstringyes
venuestringyesabstract venue id from auction.registry — NEVER a single named source
amountstringyes
connectionstringnodealer entitlement/standing via C7
authoritystringno

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.

Delegated calls require a typed Mandate{ ceiling, perAction, expires, tripwires }; the ceiling is a field, not a conversation.

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

EmitsArbitration.filed@1 · Auction.bidPlaced@1 · Bid.lost@1 · Bid.passed@1 · Bid.placed@1 · Bid.won@1 · Vehicle.bought@1.

the SDK — auction.bid
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.bid({"vin":"5N1AZ2DJXRC126527","venue":"venue","amount":"amount"})
POST /auctions/bid
curl -X POST https://apis.vin/auctions/bid \
  -H 'content-type: application/json' \
  -d '{"vin":"5N1AZ2DJXRC126527","venue":"venue","amount":"amount"}'

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:07.771Z · HTTP 200
{
  "type": "OK",
  "answers": "WholesaleBid@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "lotId": "AV-LOT-9C4AA421",
    "bidRef": "AV-BID-1",
    "accepted": true,
    "currentHigh": {
      "amount": "100000",
      "currency": "USD"
    },
    "highBidderRef": "AV-BIDDER-SANDBOX",
    "leading": true,
    "bidType": "hard",
    "bidAmount": {
      "amount": "100000",
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "lotId": "AV-LOT-9C4AA421",
    "bidRef": "AV-BID-1",
    "accepted": true,
    "currentHigh": {
      "amount": "100000",
      "currency": "USD"
    },
    "highBidderRef": "AV-BIDDER-SANDBOX",
    "leading": true,
    "bidType": "hard",
    "bidAmount": {
      "amount": "100000",
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "auction-venue-sandbox"
  },
  "events": [
    "Auction.bidPlaced@1"
  ],
  "meter": {
    "charged": "0.00",
    "posted": false
  },
  "connect": {
    "type": "OFFER",
    "kind": "connect",
    "reason": "CONNECTION_ABSENT",
    "portClass": "auction-market",
    "state": "absent",
    "url": "https://integrates.vin/connect/auction-market",
    "message": "auction.bid is live via connection — certified, connect to activate: complete the auction-market link ceremony at https://integrates.vin/connect/auction-market. The credential vault (auth.vin) holds the token, and the same call answers simulated:false — activation is the token, never a deploy."
  }
}

buyerFee

auction.buyerFee · POST /auctions/buyer-fee · gate offer · sandbox · answers AuctionBuyerFee@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.

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

EmitsAuction.buyerFeeAssessed@1 · Auction.failed@1.

the SDK — auction.buyerFee
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.buyerFee({"vin":"5N1AZ2DJXRC126527"})
POST /auctions/buyer-fee
curl -X POST https://apis.vin/auctions/buyer-fee \
  -H 'content-type: application/json' \
  -d '{"vin":"5N1AZ2DJXRC126527"}'

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:07.771Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionBuyerFee@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "fee": {
      "side": "buyer",
      "amountCents": 55500,
      "currency": "USD",
      "basis": "hammer"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "fee": {
      "side": "buyer",
      "amountCents": 55500,
      "currency": "USD",
      "basis": "hammer"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

sellerFee

auction.sellerFee · POST /auctions/seller-fee · gate offer · sandbox · answers AuctionSellerFee@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.

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

EmitsAuction.failed@1 · Auction.sellerFeeAssessed@1.

the SDK — auction.sellerFee
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.sellerFee({"vin":"5N1AZ2DJXRC126527"})
POST /auctions/seller-fee
curl -X POST https://apis.vin/auctions/seller-fee \
  -H 'content-type: application/json' \
  -d '{"vin":"5N1AZ2DJXRC126527"}'

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:07.828Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionSellerFee@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "fee": {
      "side": "seller",
      "amountCents": 44400,
      "currency": "USD",
      "basis": "hammer"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "fee": {
      "side": "seller",
      "amountCents": 44400,
      "currency": "USD",
      "basis": "hammer"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

autobid

auction.autobid · POST /auctions/autobid · gate key · sandbox · answers AuctionAutobid@1

No input — this capability takes no request body.

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

EmitsAuction.autoBid@1.

the SDK — auction.autobid
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.autobid()
POST /auctions/autobid
curl -X POST https://apis.vin/auctions/autobid \
  -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.

receipt · executed 2026-08-16T14:50:09.622Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionAutobid@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "auction",
    "asOf": "2026-08-10",
    "autobid": {
      "status": "no-consignment-on-file"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "auction",
    "asOf": "2026-08-10",
    "autobid": {
      "status": "no-consignment-on-file"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

ifBid

auction.ifBid · POST /auctions/if-bid · gate offer · sandbox · answers AuctionIfBid@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.

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

EmitsAuction.ifBidSent@1.

the SDK — auction.ifBid
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.ifBid({"vin":"5N1AZ2DJXRC126527"})
POST /auctions/if-bid
curl -X POST https://apis.vin/auctions/if-bid \
  -H 'content-type: application/json' \
  -d '{"vin":"5N1AZ2DJXRC126527"}'

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:07.787Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionIfBid@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "ifBid": {
      "status": "no-if-bid",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "ifBid": {
      "status": "no-if-bid",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

proxyBid

auction.proxyBid · POST /auctions/proxy-bid · gate offer · sandbox · answers ProxyBid@1

FieldTypeRequiredNotes
vinstringyes
venuestringyes
ceilingstringyesmax/auto-bid
authoritystringyes

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.

Delegated calls require a typed Mandate{ ceiling, perAction, expires, tripwires }; the ceiling is a field, not a conversation.

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

EmitsProxyBid.capped@1 · ProxyBid.set@1 · Vehicle.bought@1.

the SDK — auction.proxyBid
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.proxyBid({"vin":"5N1AZ2DJXRC126527","venue":"venue","ceiling":"ceiling","authority":"authority"})
POST /auctions/proxy-bid
curl -X POST https://apis.vin/auctions/proxy-bid \
  -H 'content-type: application/json' \
  -d '{"vin":"5N1AZ2DJXRC126527","venue":"venue","ceiling":"ceiling","authority":"authority"}'

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:07.816Z · HTTP 200
{
  "type": "OK",
  "answers": "ProxyBid@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "lotId": "AV-LOT-9C4AA421",
    "bidRef": "AV-BID-1",
    "accepted": true,
    "currentHigh": {
      "amount": "100000",
      "currency": "USD"
    },
    "highBidderRef": "AV-BIDDER-SANDBOX",
    "leading": true,
    "bidType": "proxy",
    "ceiling": {
      "amount": "100000",
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "lotId": "AV-LOT-9C4AA421",
    "bidRef": "AV-BID-1",
    "accepted": true,
    "currentHigh": {
      "amount": "100000",
      "currency": "USD"
    },
    "highBidderRef": "AV-BIDDER-SANDBOX",
    "leading": true,
    "bidType": "proxy",
    "ceiling": {
      "amount": "100000",
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "auction-venue-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  },
  "connect": {
    "type": "OFFER",
    "kind": "connect",
    "reason": "CONNECTION_ABSENT",
    "portClass": "auction-market",
    "state": "absent",
    "url": "https://integrates.vin/connect/auction-market",
    "message": "auction.proxyBid is live via connection — certified, connect to activate: complete the auction-market link ceremony at https://integrates.vin/connect/auction-market. The credential vault (auth.vin) holds the token, and the same call answers simulated:false — activation is the token, never a deploy."
  }
}

Apply & book

schedule

auction.schedule · GET /auctions/schedule · gate none · sandbox · answers AuctionSchedule@1

FieldTypeRequiredNotes
vinstringno

Doorauction.vin serves this noun on its two routes: / (the landing) · /5N1AZ2DJXRC126527 (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 — auction.schedule
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.schedule({"vin":"5N1AZ2DJXRC126527"})
GET /auctions/schedule
curl 'https://apis.vin/auctions/schedule?vin=5N1AZ2DJXRC126527'

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:07.827Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionSchedule@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "schedule": {
      "status": "already-scheduled",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "schedule": {
      "status": "already-scheduled",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

register

auction.register · POST /auctions/register · gate offer · sandbox · answers AuctionRegister@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.

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

EmitsAuction.registered@1.

the SDK — auction.register
import { auction } from 'apis.vin'

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

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:07.816Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionRegister@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "registration": {
      "status": "registered",
      "bidder": "Ava Good",
      "bidderNumber": 314
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "registration": {
      "status": "registered",
      "bidder": "Ava Good",
      "bidderNumber": 314
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

open

auction.open · POST /auctions/open · gate offer · sandbox · answers AuctionOpen@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.

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

EmitsAuction.opened@1.

the SDK — auction.open
import { auction } from 'apis.vin'

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

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:07.816Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionOpen@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "opening": {
      "status": "opened",
      "id": "CSN-eb2cf49e"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "opening": {
      "status": "opened",
      "id": "CSN-eb2cf49e"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

disburse

auction.disburse · POST /auctions/disburse · gate offer · sandbox · answers AuctionDisburse@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.

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

EmitsAuction.disbursed@1 · Auction.failed@1.

the SDK — auction.disburse
import { auction } from 'apis.vin'

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

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:07.782Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionDisburse@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "disbursement": {
      "status": "not-yet-settled",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "disbursement": {
      "status": "not-yet-settled",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

settle

auction.settle · POST /auctions/settle · gate offer · sandbox · answers AuctionSettle@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.

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

EmitsAuction.failed@1 · Auction.settled@1.

the SDK — auction.settle
import { auction } from 'apis.vin'

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

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:07.830Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionSettle@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "settlement": {
      "status": "not-sold",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "settlement": {
      "status": "not-sold",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

close

auction.close · POST /auctions/close · gate offer · sandbox · answers AuctionClose@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.

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

EmitsAuction.closed@1.

the SDK — auction.close
import { auction } from 'apis.vin'

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

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:07.782Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionClose@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "closing": {
      "status": "not-yet-disbursed",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "closing": {
      "status": "not-yet-disbursed",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

buyItNow

auction.buyItNow · POST /auctions/buy-it-now · gate key · sandbox · answers AuctionBuyItNow@1

No input — this capability takes no request body.

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

EmitsAuction.buyItNowExercised@1.

the SDK — auction.buyItNow
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.buyItNow()
POST /auctions/buy-it-now
curl -X POST https://apis.vin/auctions/buy-it-now \
  -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.

receipt · executed 2026-08-16T14:50:09.623Z · HTTP 200
{
  "type": "BLOCKED",
  "reason": "INVALID_VIN",
  "position": 9,
  "message": "the supplied VIN is not a valid 17-char VIN (check-digit seat is position 9)",
  "received": "",
  "events": [],
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "sandbox"
  }
}

marketIndex

auction.marketIndex · GET /auctions/market-index · gate key · sandbox · answers AuctionMarketIndex@1

FieldTypeRequiredNotes
vinstringno

Doorauction.vin serves this noun on its two routes: / (the landing) · /5N1AZ2DJXRC126527 (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 — auction.marketIndex
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.marketIndex({"vin":"5N1AZ2DJXRC126527"})
GET /auctions/market-index
curl 'https://apis.vin/auctions/market-index?vin=5N1AZ2DJXRC126527'

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:07.808Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionMarketIndex@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "segment": "compact-suv",
    "wholesaleBasis": {
      "low": {
        "amount": "2226174",
        "currency": "USD"
      },
      "average": {
        "amount": "2343342",
        "currency": "USD"
      },
      "high": {
        "amount": "2460509",
        "currency": "USD"
      }
    },
    "adjustments": [
      {
        "factor": "mileage",
        "amountBp": -734
      },
      {
        "factor": "region",
        "amountBp": 0
      },
      {
        "factor": "segment-demand",
        "amountBp": 101
      }
    ],
    "sampleSize": 44,
    "region": "national",
    "asOf": "2026-08-10"
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "segment": "compact-suv",
    "wholesaleBasis": {
      "low": {
        "amount": "2226174",
        "currency": "USD"
      },
      "average": {
        "amount": "2343342",
        "currency": "USD"
      },
      "high": {
        "amount": "2460509",
        "currency": "USD"
      }
    },
    "adjustments": [
      {
        "factor": "mileage",
        "amountBp": -734
      },
      {
        "factor": "region",
        "amountBp": 0
      },
      {
        "factor": "segment-demand",
        "amountBp": 101
      }
    ],
    "sampleSize": 44,
    "region": "national",
    "asOf": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "auction-venue-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

noSale

auction.noSale · POST /auctions/no-sale · gate offer · sandbox · answers AuctionNoSale@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.

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

EmitsAuction.noSaled@1.

the SDK — auction.noSale
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.noSale({"vin":"5N1AZ2DJXRC126527"})
POST /auctions/no-sale
curl -X POST https://apis.vin/auctions/no-sale \
  -H 'content-type: application/json' \
  -d '{"vin":"5N1AZ2DJXRC126527"}'

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:07.815Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionNoSale@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "noSale": {
      "status": "not-a-no-sale",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "noSale": {
      "status": "not-a-no-sale",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

reRun

auction.reRun · POST /auctions/re-run · gate offer · sandbox · answers AuctionReRun@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.

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

EmitsAuction.reRun@1.

the SDK — auction.reRun
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.reRun({"vin":"5N1AZ2DJXRC126527"})
POST /auctions/re-run
curl -X POST https://apis.vin/auctions/re-run \
  -H 'content-type: application/json' \
  -d '{"vin":"5N1AZ2DJXRC126527"}'

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:07.817Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionReRun@1",
  "value": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "reRun": {
      "status": "no-grounds-to-rerun",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "5N1AZ2DJXRC126527",
    "noun": "auction",
    "asOf": "2026-08-10",
    "reRun": {
      "status": "no-grounds-to-rerun",
      "id": "CSN-eb2cf49e",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

run

auction.run · POST /auctions/run · gate offer · sandbox · answers AuctionRun@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.

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

EmitsAuction.laneRun@1.

the SDK — auction.run
import { auction } from 'apis.vin'

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

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:07.818Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionRun@1",
  "value": {
    "runId": "RUN-04KBRHX",
    "laneRef": "LANE-07Y3UDW",
    "vin": "5N1AZ2DJXRC126527",
    "state": "sold",
    "reserve": {
      "amount": "14047.00",
      "currency": "USD"
    },
    "highBid": {
      "amount": "16254.00",
      "currency": "USD"
    },
    "winnerRef": "BIDDER-12IWX4U",
    "asOf": "2026-08-10"
  },
  "evidence": {
    "runId": "RUN-04KBRHX",
    "laneRef": "LANE-07Y3UDW",
    "vin": "5N1AZ2DJXRC126527",
    "state": "sold",
    "reserve": {
      "amount": "14047.00",
      "currency": "USD"
    },
    "highBid": {
      "amount": "16254.00",
      "currency": "USD"
    },
    "winnerRef": "BIDDER-12IWX4U",
    "asOf": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "market-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

watch

auction.watch · POST /auctions/watch · gate key · sandbox · answers AuctionWatch@1

No input — this capability takes no request body.

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

EmitsAuction.watched@1.

the SDK — auction.watch
import { auction } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await auction.watch()
POST /auctions/watch
curl -X POST https://apis.vin/auctions/watch \
  -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.

receipt · executed 2026-08-16T14:50:09.629Z · HTTP 200
{
  "type": "OK",
  "answers": "AuctionWatch@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "auction",
    "asOf": "2026-08-10",
    "auction": {
      "status": "no-consignment-on-file"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "auction",
    "asOf": "2026-08-10",
    "auction": {
      "status": "no-consignment-on-file"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-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.

Auction

Schema

PropertyTypeNotes
ididauc_
lanestring
runNumberint
vinstring
sellerIdref→Party
reservemoney
statusAuctionFSM

Relationships

FromToCardinalityAs
auctionvehicle*:1runs
auctionparty*:1consigned-by

Modeled

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

Auction · Class model

Auction · State machine

Auction · State machine

Auction · Sequence


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