docs.vin

A VIN in 60 seconds

Mint a key, decode a VIN, open a deal — anonymous, no email, no approval, no human in the loop.

Everything below works for an agent with no account and no human. The anonymous rung is free; the money gate is settlement, never signup.

1 — Mint a key (optional, instant)

POST /keys is anonymous — no email, no approval, no CAPTCHA. The free data faces answer without a key at all; a key only adds account context.

POST /keys
curl -X POST https://apis.vin/keys
the OK envelope
{
  "type": "OK",
  "key": "vk_sandbox_…",
  "account": "agent_anon_…",
  "environment": "sandbox",
  "links": { "pricing": "…", "agents_json": "…", "docs": "…" }
}

The key is returned once and stored only as a hash — save it. Introspect it any time at GET /keys/me.

2 — Decode a VIN (keyless)

GET /decode/{vin}
curl 'https://apis.vin/decode/JM3KFBXY1S0597748'

Answers a typed OK: year / make / model / trim, body, engine, an odometer fact, and the posted value figures. Money is a decimal string ("35887.00"). This is the estate's own keyless decode face; the keyed capability vehicle.decode answers the same question through the live platform rail once you hold a key — real bytes ride only a keyed call.

3 — Compose the record

GET /{vin} — the record face
curl 'https://apis.vin/JM3KFBXY1S0597748'

The record face composes every posted fact for the VIN and links into the deal, the listing, and each noun's facets. It negotiates — JSON for curl, Markdown and HTML by Accept. See The record.

4 — Open a deal (sandbox)

POST /buy/deals — open a deal
curl -X POST https://apis.vin/buy/deals \
  -H 'content-type: application/json' \
  -d '{"vin":"JM3KFBXY1S0597748","buyer":{"name":"Ava Good","zip":"90210"}}'

The response carries the deal id (deal_…), its lifecycle state (OPENED), and the deal's own checklist. From there the buy workflow advances step by step — each step naming the standalone capability that fulfills it — to SETTLED. The four human verbs (authorize · notarize · sign · pay) arrive as typed NEEDS_HUMAN handoffs to a named, staffed, priced terminus.

Machine-first discovery

An agent can skip this site entirely:

  • https://apis.vin/.well-known/agents.json — the capability card; it names /catalog as the first read.
  • https://apis.vin/openapi.json — the contract (only live doors, ever).
  • https://apis.vin/llms.txt — the one-page agent front door.
  • POST https://apis.vin/mcp — the estate MCP server.