Skip to content

Run workshop jobs

Scopes: work_orders:write, vehicles:read, vendors:read.

Terminal window
curl https://api.get-fleet.com/v1/work_orders \
-H "Authorization: Bearer $FLEET_API_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: job-88213-open" \
-d '{
"title": "60,000 km service",
"vehicle_id": "6f1c2b0e-8a43-4c1e-9d55-0c2b7f3e9a10",
"vendor_id": "1b7e…",
"priority": "medium",
"scheduled_start": "2026-11-03T07:00:00Z",
"po_number": "PO-2026-0441"
}'

Fleet assigns the number ("number": "WO-000123"). Priorities are low, medium, high, urgent and emergency.

Terminal window
curl https://api.get-fleet.com/v1/work_orders/$WO_ID/line_items \
-H "Authorization: Bearer $FLEET_API_KEY" -H "Content-Type: application/json" \
-d '{"type": "labor", "description": "Service labour", "quantity": 2.5, "unit_price": "3500"}'
curl https://api.get-fleet.com/v1/work_orders/$WO_ID/line_items \
-H "Authorization: Bearer $FLEET_API_KEY" -H "Content-Type: application/json" \
-d '{"type": "part", "description": "Oil filter", "quantity": 1, "unit_price": "1850", "part_id": "c41d…"}'

For labour, quantity is hours and unit_price the hourly rate. A part line with a part_id from your Fleet inventory draws the part from stock, as it does in the app.

Terminal window
curl -X PATCH https://api.get-fleet.com/v1/work_orders/$WO_ID \
-H "Authorization: Bearer $FLEET_API_KEY" -H "Content-Type: application/json" \
-d '{"status": "completed", "actual_end": "2026-11-03T15:10:00Z", "completion_odometer": 60112, "invoice_number": "INV-7731"}'

Statuses are open, in_progress, completed and cancelled. Cancel rather than delete.

Terminal window
curl "https://api.get-fleet.com/v1/work_orders?vendor_id=1b7e…&status=open&expand=vehicle" \
-H "Authorization: Bearer $FLEET_API_KEY"