docs.vin

Auction end to end

Consignment → run list → the block → settlement → disbursement → transport → title relay — every step a catalog capability, runnable against the sandbox world.

An auction is a market told through positions. A consignment enters the lane, runs the block, hammers or no-sales, settles both sides, disburses the proceeds, and the iron and its paper move. Under the journey-ownership ruling (2026-08-17), every door on this walk answers from its shared-world owner: the auction spine (runList / noSale / settle / the fee pair / disburse) from the yard-iron world registry that adjudicates the AuctionFSM itself, auction.run from the market rail (its ruled carve-out), consignment.list from the window-papers storefront, and title.assign from the title cabinet. The journey consumes those answers — it never mints a second story.

The cast

This journey rides the curated world — deterministic, replayable, every payload provenance-labeled. One fleet exemplar stands at each position of the AuctionFSM arc. The full trigger register is at sandbox test triggers.

World keyRole in this journey
1FLANESCHED000000Scheduled: consigned inbound, holding for the lane.
1FLANE0PEN0000000Open: the lane gate up.
1FLANERUNN1NG0000Running: on the block.
1FLANE1FB1D000000IfBid: the seller deciding below reserve.
1FLANEN0SALE00000NoSale: the reserve went unmet.
1FLANES0LD0000000Sold: hammer down, unsettled.
1FLANESETTLED0000Settled: the split payment cleared.
1FLANED1SBURSED00Disbursed: the proceeds paid out.
1FLANECL0SED00000Closed: gate passed, delivery proven.
1FSCRAP0FFERED000Dismantle disposition: the frontline refuses it.
1FSALVAGE00000000Branded, auction-only disposition — the one title position on the walk.

1 — Consign the unit

capabilityconsignment.listPOST /consignments/list

The intake rides the window-papers storefront: retail iron lists on consignment under the identity cast (CSG- file, the estate store), and the frontline law adjudicates the disposition — dismantle and auction-only iron refuse refused-disposition-not-retail. An auction-lane intake proper (the lienholder-of-record consignment) is a filed gap, attested below.

runnable — sandbox · deterministic1FLANESCHED000000
run it — POST /consignments/list
curl -X POST 'https://apis.vin/consignments/list' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FLANESCHED000000"}'
the world answers — ConsignmentList@1 (excerpt)
{
  "vin": "1FLANESCHED000000",
  "noun": "consignment",
  "asOf": "2026-08-10",
  "listingId": "LST-46952b1f",
  "venue": "estate-storefront",
  "commercialState": "retail",
  "consignment": {
    "id": "CSG-7d6ed96c",
    "status": "listed-on-consignment",
    "consignor": { "identityId": "ID-11f17424", "name": "Ava Good", "castRow": "super-prime" }
  }
}

2 — The run list

capabilityauction.runListGET /auctions/run-list

The yard's census of the lane: nine consignments, one per AuctionFSM position — the machine's own roster, read at the observation.

runnable — sandbox · deterministic1FLANESCHED000000
run it — GET /auctions/run-list
curl 'https://apis.vin/auctions/run-list'
the world answers — AuctionRunList@1
{
  "vin": "1HGCM82633A004352",
  "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
    }
  }
}

3 — The block

capabilityauction.runPOST /auctions/run

The run door is the market rail's carve-out: a deterministic seeded run record per VIN — RUN- / LANE- / BIDDER- references, a reserve and a high bid. It does not read the lane machine (every consignment answers sold here) — the contradiction with the yard's own positions is a filed gap, attested below.

runnable — sandbox · deterministic1FLANERUNN1NG0000
run it — POST /auctions/run
curl -X POST 'https://apis.vin/auctions/run' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FLANERUNN1NG0000"}'
the world answers — AuctionRun@1
{
  "runId": "RUN-1MFVPLA",
  "laneRef": "LANE-110AJYV",
  "vin": "1FLANERUNN1NG0000",
  "state": "sold",
  "reserve": { "amount": "15575.00", "currency": "USD" },
  "highBid": { "amount": "18314.00", "currency": "USD" },
  "winnerRef": "BIDDER-11NOBJ9",
  "asOf": "2026-08-10"
}

4 — Or: no sale

capabilityauction.noSalePOST /auctions/no-sale

The yard adjudicates: the no-sale stands only where the reserve went unmet. A sold lane answers not-a-no-sale with its position, and iron with no lane story answers no-consignment-on-file — the yard never invents an exit.

runnable — sandbox · deterministic1FLANEN0SALE00000
run it — POST /auctions/no-sale
curl -X POST 'https://apis.vin/auctions/no-sale' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FLANEN0SALE00000"}'
the world answers — AuctionNoSale@1
{
  "vin": "1FLANEN0SALE00000",
  "noun": "auction",
  "asOf": "2026-08-10",
  "noSale": {
    "status": "no-sale-stands",
    "id": "CSN-2b2c9e51",
    "reserveCents": 1850000,
    "currency": "USD"
  }
}

5 — Settle both sides

The settlement follows the position: a Running lane refuses not-sold, a Sold one holds awaiting-settlement, and the settled exemplars post the seller's net under the consignment's own CSN- identity. The fee doors post the yard's documented buyer and seller fees against the hammer.

runnable — sandbox · deterministic1FLANESETTLED0000
run it — POST /auctions/settle
curl -X POST 'https://apis.vin/auctions/settle' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FLANESETTLED0000"}'
the world answers — AuctionSettle@1
{
  "vin": "1FLANESETTLED0000",
  "noun": "auction",
  "asOf": "2026-08-10",
  "settlement": {
    "status": "settled",
    "id": "CSN-5570a8c3",
    "sellerNetCents": 1776000,
    "currency": "USD"
  },
  "payer": { "name": "Ava Good", "castRow": "super-prime", "creditTier": "super-prime" }
}

6 — Disburse the proceeds

capabilityauction.disbursePOST /auctions/disburse

The money follows the funds: a Sold-but-unsettled lane refuses not-yet-settled, a Settled one disburses, and the Disbursed exemplar answers already-disbursed. The proceeds ARE the settlement's seller net — 1776000, byte-for-byte, under the same CSN- file.

runnable — sandbox · deterministic1FLANESETTLED0000
run it — POST /auctions/disburse
curl -X POST 'https://apis.vin/auctions/disburse' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FLANESETTLED0000"}'
the world answers — AuctionDisburse@1
{
  "vin": "1FLANESETTLED0000",
  "noun": "auction",
  "asOf": "2026-08-10",
  "disbursement": {
    "status": "disbursed",
    "id": "CSN-5570a8c3",
    "proceedsCents": 1776000,
    "currency": "USD"
  }
}

7 — Move the iron

capabilitytransport.bookcarrier.podPOST /transports/book

The transport leg rides the world-keyed logistics doors — the closed lane's delivery stands Proven on the transport arc, the move under its own TR- identity at the documented rate.

runnable — sandbox · deterministic1FLANECL0SED00000
run it — POST /transports/book
curl -X POST 'https://apis.vin/transports/book' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FLANECL0SED00000"}'
the world answers — TransportOrder@1
{
  "vin": "1FLANECL0SED00000",
  "noun": "transport",
  "asOf": "2026-08-10",
  "phase": "Proven",
  "move": {
    "id": "TR-3fb495d5",
    "action": "book",
    "status": "booked",
    "rateCents": 89500,
    "currency": "USD"
  }
}

8 — The title relay

capabilitytitle.assignPOST /titles/assign

The title cabinet adjudicates the TitleFSM: only iron with a title position assigns — the branded exemplar relays from the estate store with its Branded position disclosed. The lane exemplars carry no title story (no-title-on-file) — the title-follows-the-funds relay is a filed gap, attested below.

runnable — sandbox · deterministic1FSALVAGE00000000
run it — POST /titles/assign
curl -X POST 'https://apis.vin/titles/assign' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FSALVAGE00000000"}'
the world answers — TitleAssign@1
{
  "vin": "1FSALVAGE00000000",
  "noun": "title",
  "asOf": "2026-08-10",
  "assignment": {
    "status": "assigned",
    "titleId": "TTL-f7a0e2fd",
    "position": "Branded",
    "from": { "partyId": "DLR-b9066ade", "name": "The Estate Store" },
    "to": { "identityId": "ID-11f17424", "name": "Ava Good" }
  }
}

Where the world refuses

capabilityconsignment.listauction.settlePOST /consignments/list

The refusal is typed, never a wall. The frontline refuses non-retail dispositions; the yard's settlement, disbursement, and no-sale doors refuse with the lane's own position; and iron with no lane story answers no-consignment-on-file.

runnable — sandbox · deterministic1FSCRAP0FFERED000
run it — POST /consignments/list
curl -X POST 'https://apis.vin/consignments/list' \
  -H 'content-type: application/json' \
  -d '{"vin":"1FSCRAP0FFERED000"}'
the world answers — ConsignmentList@1 (refused, excerpt)
{
  "vin": "1FSCRAP0FFERED000",
  "noun": "consignment",
  "asOf": "2026-08-10",
  "commercialState": "dismantle",
  "consignment": { "status": "refused-disposition-not-retail", "basis": "frontline-law" }
}

What the record now holds — and what it does not

The walk posts one lane story on the yard's doors: the AuctionFSM census on the run list, position-adjudicated settlement / disbursement / no-sale under one CSN- identity per VIN, and proceeds that ARE the seller's net. The storefront adjudicates the disposition and the title cabinet the title position.

Thin ground, attested (each filed as a bd model-gap, per the honest-grade law — the journey suite pins today's bytes as the tripwire): the lane tells three money stories — the market rail's auction.run answers sold with seeded dollars for every consignment against the yard's own positions, the yard's fees and settlement ride one flat table unmoored from the valuation book and from the repo journey's remarketing proceeds, the fee doors quote unconsigned iron, and the run list carries no run order (vin-8722); and the auction intake and title relay are unanswered — consignment.list is the retail storefront door and the lane iron has no title on file (vin-1byt). Compose the facts on the record face, GET /{vin}, at the record.

Next