{"openapi":"3.0.3","info":{"title":"moving.one Agent API","version":"0.2.0","description":"Two products. (1) POST /v1/vision — real photo → moving inventory (catalog id, cu.ft., bulky). Auth: X-API-Key or sandbox X-PAYMENT. (2) Live boxes run on-device; see src/lib/live-detect. GET /v1/scan is still the sandbox size-class demo."},"paths":{"/v1/vision":{"get":{"summary":"Vision API status and usage","responses":{"200":{"description":"Auth mode and POST contract"}}},"post":{"summary":"Identify movable items in one still (data URL)","description":"Send a JPEG/PNG data URL. Returns catalog-matched inventory. Do not stream video frames. Live boxing is the client library.","responses":{"200":{"description":"Inventory JSON"},"401":{"description":"Bad API key"},"402":{"description":"Sandbox payment required"},"429":{"description":"Rate limited"}}}},"/v1/scan":{"get":{"summary":"Unlock a home scan","parameters":[{"name":"size","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Inventory JSON after payment"},"402":{"description":"Payment required in USDC (sandbox)"}}}},"/v1/scan/pay":{"post":{"summary":"Mint a sandbox x402 receipt","responses":{"200":{"description":"Token for X-PAYMENT"}}}},"/v1/quote":{"get":{"summary":"Planning quote from pickup and dropoff","parameters":[{"name":"pickup","in":"query","required":true,"schema":{"type":"string"}},{"name":"dropoff","in":"query","required":true,"schema":{"type":"string"}},{"name":"size","in":"query","schema":{"type":"string"}},{"name":"class","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Quote"}}}},"/v1/request":{"post":{"summary":"Book if under human cap. Requires a scan receipt and contact.phone.","responses":{"200":{"description":"Job accepted into the live pipeline"},"402":{"description":"Pay first"},"403":{"description":"Over guardrail"}}}}}}