Playground

Enter your sheet and part sizes. The form is filled with a small cabinet, so you can press Optimize right away. No account needed.

Sheet

Parts

6 of 30 part types, 14 of 100 parts

NameLength (mm)Width (mm)QuantityGrainRemove

Press Optimize to see the cutting plan.

Run it with your own key

This is the same request against POST /v1/optimize. That endpoint queues a job and returns 202 with a job_id. Poll GET /v1/jobs/{id} until the status is completed to read the result. Set SAWVANT_API_KEY first. Get a free API key.

curl -X POST https://api.sawvant.com/v1/optimize \
  -H "X-API-Key: $SAWVANT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "sheets": [
    {"id": "sheet-2800x2070", "length": 2800, "width": 2070, "quantity": 0, "grain": "length"}
  ],
  "parts": [
    {"id": "Side", "length": 720, "width": 560, "quantity": 2, "grain": "length"},
    {"id": "Bottom", "length": 564, "width": 540, "quantity": 1, "grain": "none"},
    {"id": "Shelf", "length": 564, "width": 540, "quantity": 2, "grain": "none"},
    {"id": "Door", "length": 716, "width": 396, "quantity": 4, "grain": "length"},
    {"id": "Back", "length": 716, "width": 596, "quantity": 1, "grain": "none"},
    {"id": "Drawer-front", "length": 564, "width": 140, "quantity": 4, "grain": "length"}
  ],
  "machine": {"blade_thickness": 4, "max_levels": 3, "cut_direction": "default"}
}'