Request human help for physical-world tasks. Bridge verifies the work was done before releasing payment.
bash
uvicorn bridge.app:app --port 8015
bash
curl -s -X POST http://localhost:8015/v1/tasks \
-H "Content-Type: application/json" \
-d '{
"description": "Pick up package at 123 Main St, photograph it",
"budget_usdc": "25.00",
"verification_criteria": [
{"type": "gps_proof", "description": "At pickup location", "params": {"latitude": 37.7749, "longitude": -122.4194, "radius_m": 100}},
{"type": "photo_proof", "description": "Photo of package", "params": {"min_photos": 1}}
]
}' | jq
Escrow is locked automatically. Fee is 5% of budget.
bash
curl -s -X POST http://localhost:8015/v1/tasks/TASK_ID/verify \
-H "Content-Type: application/json" \
-d '{
"worker_id": "worker-1",
"proofs": [
{"type": "gps_proof", "data": {"latitude": 37.7749, "longitude": -122.4194}},
{"type": "photo_proof", "data": {"photo_hashes": ["sha256:abc123"]}}
]
}' | jq
If ALL criteria pass → escrow released. If any fail → escrow held.
bash
curl -s -X POST http://localhost:8015/v1/tasks/TASK_ID/dispute \
-H "Content-Type: application/json" \
-d '{"reason": "GPS proof appears faked"}' | jq
Freezes escrow. No verification possible while disputed.
bash
curl -s http://localhost:8015/v1/tasks | jq # List all tasks
curl -s http://localhost:8015/v1/tasks?status=posted | jq # Filter by status
curl -s http://localhost:8015/v1/platforms | jq # Available platforms
curl -s http://localhost:8015/v1/stats | jq # Platform statistics
TypeWhat it provesHowgps_proofWorker was at locationHaversine distance < radiusphoto_proofPhotos submittedUnique hash count >= mintimestamp_proofDone within deadlineElapsed hours < maxsignature_proofCryptographic signatureNon-empty signature present