Agent mode

Pay per scan.
Stay inside the cap.

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" }
  ]
}

# Booking rail (unchanged)
GET /v1/quote?pickup=Dallas,TX&dropoff=Austin,TX
POST /v1/request

AiFi for moving

Two customers. One rail.

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

You tap. We roll.

Home scan, request, 30% to lock the date. Guardrails default to confirm anything over your cap.

Agent mode

Software that can pay.

Hit /v1/scan, receive HTTP 402, pay the sandbox receipt, get inventory, then book.

Guardrails

People define the objective.

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"
  }]
}