Human mode
You tap. We roll.
Home scan, request, 30% to lock the date. Guardrails default to confirm anything over your cap.
Agent mode
Two pieces: a client library that draws boxes on-device, and POST /v1/vision that turns a still into moving inventory. Agents pay per call (x402 sandbox or API key). Live video never leaves the phone.
# Live boxes run on the phone (client library).
# This endpoint names what you locked and fills cubic feet.
POST /v1/vision
{ "image": "data:image/jpeg;base64,..." }
X-API-Key: <key> # production
X-PAYMENT: <receipt> # sandbox (POST /v1/scan/pay first)
→ 200
{
"ok": true,
"roomGuess": "living-room",
"items": [
{ "itemId": "sofa-3seat", "name": "Sofa (3-seat)",
"qty": 1, "cubicFeet": 50, "isBulky": false, "confidence": "high" }
]
}
# Agent API 1.0 — quote_id, bookable, lock, cap
GET /v1/quote?pickup=Washington,DC&dropoff=Miami,FL
→ bookable: "bookable", lock.discountPct: 7, 30% of discounted confirmed
GET /v1/quote?pickup=Dallas,TX&dropoff=Austin,TX
→ bookable: "review", lock: null (no fake lock)
POST /v1/request { "quote_id": "q_…", "contact": { "phone": "+1…" } }AiFi for moving
Humans tap. Agents pay per scan, per quote, per mile — inside limits you set. Sandbox x402 on this page; live customer deposits stay on Stripe.
Human mode
Home scan, request, 30% to lock the date. Guardrails default to confirm anything over your cap.
Agent mode
Hit /v1/scan, receive HTTP 402, pay the sandbox receipt, get inventory, then book.
Guardrails
Agent may auto-book local jobs under $800. Anything over $2,500 is blocked.
HTTP 402 PAYMENT REQUIRED
{
"resource": "/v1/scan",
"accepts": [{
"scheme": "exact",
"network": "base",
"asset": "USDC",
"amount": "0.25",
"payTo": "moving.one"
}]
}